Matlab - Cómo definir un if

 
Vista:
sin imagen de perfil
Val: 55
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Cómo definir un if

Publicado por Pilar (35 intervenciones) el 06/09/2017 00:21:28
Hola a todos, espero puedan ayudarme, tengo una duda, tengo una serie de valores diferentes que oscilan entre 0 y 1 obtenidos con la función rand y los multiplico con otra función que dependiendo de los valores aleatorios puede ser más que 1 o menos que 0, lo que deseo hacer es que se establezca que los valores en b no pueden exceder menos de 0 y más que 1 y si el resultado diera valores así se reestablezca al valor que tenía antes de llegar a menos que 0 o más que 1. Por ejemplo:
1
2
3
4
for i=1:5
a(i,:)=rand(1,5);
b(i,:)=a(i)+rand(1,5)-0.6;
end
¿Cómo puedo establecer los límites para b que cumplan esas condiciones?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lindsey
Val: 419
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cómo definir un if

Publicado por Lindsey (119 intervenciones) el 06/09/2017 05:44:47
"lo que deseo hacer es que se establezca que los valores en b no pueden exceder menos de 0 y más que 1 y si el resultado diera valores así se reestablezca al valor que tenía antes de llegar a menos que 0 o más que 1"

Respecto a la parte en que se establezca que los valores de b no pueden ser menor que 0 ni mayor que 1 no hay problema, pero a qué te refieres con que "se reestablezca al valor que tenía antes de llegar a menos que 0 o más que 1."? Es que no le encuentro mucho sentido, si encuentras un b(i,:) que cumple la condición, no tendrías por qué recalcularlo, y de todas maneras si lo recalculas y encuentras que el nuevo b(i,:) no cumple la condición y lo quieras restablecer al b(i,:) inicial que sí cumplía, entonces lo de recalcular sería innecesario.

Para hacer que los valores en b(i,:) cumplan la condición de estar entre 0 y 1, creo que te serviría mejor un while, así, si por ejemplo en b(i,:) hay al menos un número menor que 0 o al menos un número mayor que 1, los valores de b(i,:) se recalculan en el while hasta cumplir que todos estén en el rango deseado.

1
2
3
4
5
6
7
8
9
10
for i=1:5
 
a(i,:)=rand(1,5);
b(i,:)=a(i)+rand(1,5)-0.6;
 
while sum(b(i,:)<0)>0 | sum(b(i,:)>1)>0
    b(i,:)=a(i)+rand(1,5)-0.6;
end
 
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 55
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Cómo definir un if

Publicado por Pilar (35 intervenciones) el 06/09/2017 07:27:26
Bueno es que en realidad mi problema va más allá de lo sencillo del ejemplo, voy a utilizarlo en un código más grande, donde estoy optimizando valores entre 0 y 1, lo que quiero es que no se pasen de esos límites y el problema que me da es que según mi código los mejores resultados son todos igual a 1 así que quiero checar si es posible que en lugar de que los valores se establezcan a igual que 0 o 1, se queden en el resultado que tenían antes de llegar a ese límite o pasarlo, para que continúen con ese ciclo. No se si me explique.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar