Matlab - Sentencia if

 
Vista:
sin imagen de perfil

Sentencia if

Publicado por Pablo (3 intervenciones) el 07/10/2013 09:07:45
Buenos días. Estoy escribiendo mi proyecto fin de carrera y tengo algunas dudas muy simples sobre programación con matlab.
Tengo el dos vectores:
X1_dec=[8;9;13;12;11;8;7;1;6;11];
X2_dec=[12;13;11;5;7;13;9;6;3;14];
y una función:
y=(0.75*(X1_dec).^2+X1_dec.*X2_dec+1.25*(X2_dec).^2);
C=675

Necesito que se cumplan las siguientes tres condiciones:
X1_dec>0
X2_dec>0
X1_dec+X2_dec>=8

Quiero un vector con el valor de Y en el caso de que se cumplan las tres condiciones. Sino, que el valor de Y sea 0.

Esto es lo que he programado:

1
2
3
4
5
6
7
8
9
10
11
for i=1:10
    if X1_dec(i)<0
       y=0
  elseif X2_dec(i)<0
      y=0
 elseif X1_dec(i).*X2_dec(i)<=8
    y=0
 else
    y=C-(0.75*(X1_dec).^2+X1_dec.*X2_dec+1.25*(X2_dec).^2)
end
end

El resultado que obtengo es un vector con el resultado de Y pero no me ejecuta las condiciones ya que en la posición i=7, no se cumple la condición 3. En lugar de devolverme Y=0 en esa posición, me devuelve el valor de Y como si la cumpliese.

Agradecería mucho que me ayudaseis con esta duda. Sé que es muy simple pero no se en qué me estoy equivocando.
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
sin imagen de perfil

Sentencia if

Publicado por Luis (4 intervenciones) el 08/10/2013 19:32:59
Perdonaras mi ignorancia ya que no he manejado mucho MATLAB o no recuerdo mucho sobre las operaciones que manejas, pero en la posición i=7 tomas de

X1_dec=[8;9;13;12;11;8;7;1;6;11]
y de
X2_dec=[12;13;11;5;7;13;9;6;3;14];

¿7 y 9? Ya que están e la 7° posición y en la condición 3

elseif X1_dec(i).*X2_dec(i)<=8

¿Acaso no es una multiplicación de vectores? 7x9=63 y 63 no es menor o igual a 8. Si es como lo digo ese seria el problema de que se vaya directo a:

y=C-(0.75*(X1_dec).^2+X1_dec.*X2_dec+1.25*(X2_dec).^2)

Saludos.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Sentencia if

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 09/10/2013 01:50:07
Trata de hacer clara tu pregunta, por una parte cuando inicias tu pregunta dices que quieres que se cumpla esta tres condiciones
X1_dec>0
X2_dec>0
X1_dec+X2_dec>=8

pero sin embargo abajo, empiezas probando si son negativos y además pones X1_dec*X2_dec>=8
que es en conclusión, multiplicación o suma, números positivos o negativos.
Tampoco no eres claro que es quieres como salida Y, un vector o un numero, si es un vector, que valores quieres que salga o si un numero que valores quieres que salga.
Hay mucha confusión en tu pregunta.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Sentencia if

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 10/10/2013 15:33:09
Muchas gracias por vuestra ayuda. Finalmente conseguí averiguarlo y la duda ya está resuelta. Intentaré expresarme mejor en la próxima intervención.
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

Sentencia if

Publicado por Luis (4 intervenciones) el 11/10/2013 00:56:24
¿Podrías decirnos como lo solucionaste? ¿Cual era el problema?
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

Sentencia if

Publicado por Pablo (3 intervenciones) el 21/10/2013 12:22:10
Lo solucioné de la siguiente manera:

1
2
3
4
5
6
7
for i=1:10;
        if X2_dec(i)<0 | X1_dec(i)<0 | X1_dec(i)+X2_dec(i)<=8,
            f(i)=0;
        else
            f(i)=C-(0.75*(X1_dec(i)).^2+X1_dec(i).*X2_dec(i)+1.25*(X2_dec(i)).^2);
        end
end

Un saludo!
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