Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Problema de Matlab
Autor Mensaje
Maik Sin conexión
Presidente del CEIT
.
********

Otra
Otra

Mensajes: 5.358
Agradecimientos dados: 48
Agradecimientos: 191 en 137 posts
Registro en: Sep 2011
Mensaje: #1
Problema de Matlab
Buenas, tengo un tema con un pedacito de codigo en matlab.
Necesito calcular autovalores y autovectores de mas o menos 20 matrices (en realidad es una matriz fija (simbolica) y el producto de cada una de sus componentes por las componentes de un vector que es de norma fija y va haciendo un barrido de 0 a 2pi).. El tema es que para esto lo que veo mas conveniente es guardar todos los resultados en una matriz tridimensional que guarde todos los resultados en matrices separadas. Pero aparece el error cuando hago la siguiente asignacion:


Autovectores(:,:,i) = R; (R es la matriz de autovectores).


Cita:The following error occurred converting from sym to double:
DOUBLE cannot convert the input expression into a double array.

Error in Untitled (line 39)
Autovectores(:,:,i) = R;

alguien tiene idea como puedo solucionar este error? la unica que se me ocurre es calcular los autovectores a mano, armar 20 matrices de 2 dimensiones (porque el error lo hace aparecer ese "(:,:,i)", si la asignacion la hago solo con una matriz de 2 dimensiones no aparece ese error.

MODS
[Imagen: 2r5t075.jpg]
(Este mensaje fue modificado por última vez en: 18-06-2016 14:39 por Maik.)
18-06-2016 14:37
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
luchovl2 Sin conexión
Presidente del CEIT
Dígame, Ingeniero.
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.031
Agradecimientos dados: 20
Agradecimientos: 262 en 239 posts
Registro en: May 2009
Mensaje: #2
RE: Problema de Matlab
Hola Maik. ¿Podés poner el código? Tuve un problema así en algún momento, pero no recuerdo cómo lo solucioné.
18-06-2016 16:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Maik Sin conexión
Presidente del CEIT
.
********

Otra
Otra

Mensajes: 5.358
Agradecimientos dados: 48
Agradecimientos: 191 en 137 posts
Registro en: Sep 2011
Mensaje: #3
RE: Problema de Matlab
Cita:% Inicializacion de variables.
syms C densidad velocidad Autovectores

C=[ sym('C11') sym('C12') sym('C13') sym(0) sym(0) sym(0) ;
sym('C21') sym('C22') sym('C23') sym(0) sym(0) sym(0) ;
sym('C31') sym('C32') sym('C33') sym(0) sym(0) sym(0) ;
sym(0) sym(0) sym(0) sym('C44') sym(0) sym(0) ;
sym(0) sym(0) sym(0) sym(0) sym('C55') sym(0) ;
sym(0) sym(0) sym(0) sym(0) sym(0) sym('C66') ];
%Arreglo tridimensional para manejar todos los valores de los 360º para las
%3 velocidades encontradas.
Autovectores=zeros(3,3,20)
Autovalores=zeros(3,3,20);
angulo=0;
i=0;

l1 = sin(degtorad(angulo)); %prefiero trabajar el angulo en grados y no en radianes
l2 = 0;
l3 = cos(degtorad(angulo));
L=[ l1 , l2 , l3];

for i=1:5
l1 = sin(degtorad(angulo));
l2 = 0;
l3 = cos(degtorad(angulo));
L=[ l1 , l2 , l3];

R=[ C(1,1)*l1^2+C(6,6)*l2^2+C(5,5)*l3^2 (C(1,2)+C(6,6))*l1*l2 (C(1,3)+C(5,5))*l1*l3
(C(1,2)+C(6,6))*l1*l2 C(6,6)*l1^2+C(2,2)*l2^2+C(4,4)*l3^2 (C(4,4)+C(2,3))*l2*l3
(C(1,3)+C(5,5))*l1*l3 (C(4,4)+C(2,3))*l2*l3 C(5,5)*l1^2+C(4,4)*l2^2+C(3,3)*l3^2];
J = R-eye(3)*(densidad*velocidad^2);
end


%angulo = angulo+tanto;
%end
[D,R]= eig(J);
Autovalores(:,:,i) = D;
%Autovectores(:,:,i) = R;
Autovectores(2,3,1)=R(1,1)

es un calculo tensorial.
la cosa es que en J tengo la matriz que quiero analizar, los autovectores estan en funcion de las constantes del material (velocidad de propagacion de onda en esa direccion y la densidad).
el for seria el barrido del vector por cada angulo que quiera hacer el calculo.
y las cosas que deje como comentarios los puse asi hasta solucionar el problema.

estoy bastante seguro que el problema pasa de extraer el resultado de una matriz bidimensional y meterlo en una tridimensional. no se si hay que usar los comandos como los de concatenar o algo asi. estoy intententando ver como se usan, pero no se si entiendo bien como usarlo y que es lo que hace.

MODS
[Imagen: 2r5t075.jpg]
(Este mensaje fue modificado por última vez en: 18-06-2016 18:17 por Maik.)
18-06-2016 17:57
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
luchovl2 Sin conexión
Presidente del CEIT
Dígame, Ingeniero.
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.031
Agradecimientos dados: 20
Agradecimientos: 262 en 239 posts
Registro en: May 2009
Mensaje: #4
RE: Problema de Matlab
Bueno, yo lo solucioné evaluando y a la mierda. Se ve que no puede manejar la N-dimensionalidad. Tal vez las últimas vesiones sí (yo tengo la 2013).

¿Por qué no declarás "Autovectores" como simbólica? No se puede declarar una matriz 3D de símbolos, pero se puede usar reshape.

m = sym('m', [1 180]);
m = reshape(m, 3, 3, 20);

Y después sí:

m(:,:,i) = R;
18-06-2016 21:22
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Maik Sin conexión
Presidente del CEIT
.
********

Otra
Otra

Mensajes: 5.358
Agradecimientos dados: 48
Agradecimientos: 191 en 137 posts
Registro en: Sep 2011
Mensaje: #5
RE: Problema de Matlab
me sigue tirando error, creo que voy a graficar directamente todo, sin guardar los valores, y ver si los puedo graficar directamente a medida que los va calculando.

MODS
[Imagen: 2r5t075.jpg]
18-06-2016 21:46
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Elmats Sin conexión
Presidente del CEIT
Oh my gauss
********

Otra
UBA - Ciencias Exactas y Naturales

Mensajes: 1.307
Agradecimientos dados: 25
Agradecimientos: 108 en 69 posts
Registro en: Mar 2012
Mensaje: #6
RE: Problema de Matlab
Hay un paquete de Matlab para laburar con tensores. Eso capaz lo arregla.

“Our virtues and our failings are inseparable, like force and matter. When they separate, man is no more.”
19-06-2016 10:29
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.