Matlab - Introducir más condiciones a un If

 
Vista:

Introducir más condiciones a un If

Publicado por David (2 intervenciones) el 18/01/2015 11:29:34
Buenas,

Tengo una matriz 3D de NxNxN, y quiero saber si las componentes y(:,:,k) son simetricas, para ello uso:

if isequal(y(:,:,k),y(:,:,k)')==1

pero necesito saberlo para todas las k, y N va creciendo. Como puedo meter más condiciones al if a medida que aumenta N?

N es un valor que introduzco yo.

Muchas gracias!
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 Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Introducir más condiciones a un If

Publicado por Daniel (264 intervenciones) el 21/01/2015 20:08:37
No estoy seguro de entender correctamente la pregunta, en caso de que lo pongo no sirva, avisa.

Esto no responde el hecho general que preguntaste de como "Introducir más condiciones a un If " sino que encara el problema puntual que describís de otra manera.

Por lo que entiendo queres saber si la matriz 3D completa es simétrica, entendiendo esto como:

si se cumple que y(:,:,k)=y(:,:,k)' para todo k de 1 a N

la idea de transponer está asociada a intercambiar filas por columnas y matlab "no entiende" que significa transponer en una matriz 3D. Sin embargo en Matlab podes intercambiar un dimensión y otra (en ND) usando la funcion permute. Con esto una matriz de dimension AxBxC la podes convertir en una matriz de BxAxC u otras variantes, ya sea que A, B y C sean o no iguales.

En tu caso si y es tu matriz 3D al poner
1
permute(y,[2,1,3])

genera la matriz que "se entiende como la transpuesta de y", luego la condicion queda como

1
if isequal(a,permute(a,[2 1 3]))==1

y ya no tenes que hacer un loop para recorrer la variable k.

Espero que sirva

Saludos

Daniel
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