bucle if con varias condiciones
Publicado por Francisco Jesús (3 intervenciones) el 05/01/2017 21:14:48
Hola a todos!!
Estoy teniendo un problema a la hora de igualar en un bucle if varias condiciones. Es curioso porque cuando se trata del valor de 'x' sí que me lo hace bien, pero no con el de 'y'.
Dejo el scrib con comentarios del mismo, a ver si alguien me pudiera ayudar. Espero que se pueda entender. Si hay alguna duda sobre el scrib estaré escantado de responderos con más detalle.
Muchas gracias de antemano.
Un saludo.
Estoy teniendo un problema a la hora de igualar en un bucle if varias condiciones. Es curioso porque cuando se trata del valor de 'x' sí que me lo hace bien, pero no con el de 'y'.
Dejo el scrib con comentarios del mismo, a ver si alguien me pudiera ayudar. Espero que se pueda entender. Si hay alguna duda sobre el scrib estaré escantado de responderos con más detalle.
Muchas gracias de antemano.
Un saludo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
%Voy a poner un ejemplo con el primer número que debería hacer, así le
%asigno valores y no tengo que copiar todo el scrib
%sacamos el baricentro de un elemento diferencial de forma triangular que será G, y lo redondeamos a
%un decimal con J
G=zeros(1,2);
xg=mean(xv); %xv=[34.1848, 45.4262, 35.6877] y será xg=38.4329
yg=mean(yv); %xv=[219.0522, 228.9690, 233.8103] y será xg=227.2772
G(1,1)=xg;
G(1,2)=yg;
J=roundn(G,-1); %J=[38.4, 227.3]
Zx=J(1,1); %Zx=38.4
Zy=J(1,2); %Zy=227.3
%quiero saber en que filas y columnas están las coordenadas(x,y) que estoy
%buscando del centro del triángulo de los elementos, para ello
%redondeo la cifra Zc para que me de un valor justo con un decimal y
%aproximo su cifra al valor exacto o con un error, ya que las
%coordenadas en 'X' empezará en 0.1 e irá de 0.2 en 0.2, la matriz será Coord_X=(0.1,0.1,...; 0.3,0.3,...;0.5,0.5,...)
%con las coordenadas en 'Y' pasará igual, pero comenzando en 0.3 y saltando de 0.6 en 0.6 (Coord_Y=(0.3,0.3,...; 0.9,0.9,...; 1.5,1.5,...).
for s=1:1:906
Zc=Coord_X(1,s);
Zc=roundn(Zc,-1); %Zc=38.3
if (Zx==Zc||(Zx-0.1)==Zc) %parece que con estas condiciones me funciona bien, ya que resta 38.4-0.1
M=s;
break
end
end
for t=1:1:906
Zv=Coord_Y(t,1);
Zv=roundn(Zv,-1); %Zv=227.1
%aquí está el primer problema, ya que no hace coincidir Zy con ninguna Zv, entonces el break no funciona y for
%sigue corriendo hasta el final no dando nungún valor a N y situándome Zv
%en el último valor de la cadena de Coordendas_Y Zv=(543.3)
if (Zy==Zv||(Zy-0.1)==Zv||(Zy-0.2)==Zv||(Zy-0.3)==Zv||(Zy+0.1)==Zv||(Zy+0.2)==Zv)
N=t;
break
end
end
%recorro puntos de alrededor del baricentro para ver cual está dentro
k=-1.8;
for j=-3:0.1:3
xq=Zc+j;
yq=Zv+k;
[in]=inpolygon(xq,yq,xv,yv);
k=k+0.6;
if (in==1)
%cuando encontramos un punto dentro, entonces sacamos los valores de x e y de esos puntos
for s=1:1:906
Za=Coord_X(1,s);
Za=roundn(Za,-1);
if (xq==Za)
HUx=s;
break
end
end
for t=1:1:906
Zb=Coord_Y(t,1);
Zb=roundn(Zb,-1);
%aquí también me pasa que no es capaz de igualarlo, y no logro obtener el valor de HUy
if (yq==Zb)
HUy=t;
break
end
end
end
end
Valora esta pregunta
0