I want to create a 12x6 Matrix from six 12x1 eigenvectors; what's wrong with this code?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jake
el 25 de Abr. de 2014
Comentada: Jake
el 25 de Abr. de 2014
When I execute this code, instead of an intended 12x6 matrix "u" made from u(1), u(2), u(3), etc., I end up with a single 12x1 vector "u", as u gets overwritten each pass.
for i = 1:12;
o = omega(i);
M = [(-o^2*m(1)+k(1)+k(2)), -k(2), 0, 0, 0, 0; -k(2), (-o^2*m(2)+k(2)+k(3)), -k(3), 0, 0, 0; 0, -k(3), (-o^2*m(3)+k(3)+k(4)), -k(4), 0, 0; 0, 0, -k(4), (-o^2*m(4)+k(4)+k(5)), -k(5), 0;0, 0, 0, -k(5), (-o^2*m(5)+k(5)+k(6)), -k(6); 0, 0, 0, 0, -k(6), (-o^2*m(6)+k(6)+k(7))];
u(i)= eig(M);
end
where omega is a 12x1 vector.
What's wrong with the code?
0 comentarios
Respuesta aceptada
Andrew Newell
el 25 de Abr. de 2014
Editada: Andrew Newell
el 25 de Abr. de 2014
I'm not sure how you avoided getting a dimension mismatch error there. The thing you're missing is a colon:
u = zeros(length(m),length(omega));
for i = 1:length(omega);
o = omega(i);
M = [(-o^2*m(1)+k(1)+k(2)), -k(2), 0, 0, 0, 0; ...
-k(2), (-o^2*m(2)+k(2)+k(3)), -k(3), 0, 0, 0; ...
0, -k(3), (-o^2*m(3)+k(3)+k(4)), -k(4), 0, 0; ...
0, 0, -k(4), (-o^2*m(4)+k(4)+k(5)), -k(5), 0; ...
0, 0, 0, -k(5), (-o^2*m(5)+k(5)+k(6)), -k(6); ...
0, 0, 0, 0, -k(6), (-o^2*m(6)+k(6)+k(7))];
u(:,i)= eig(M);
end
Note that I have included a few good programming practices: initializing omega, using length(omega) and length(m) in place of the meaningless numbers 12 and 6, and formatting the code so it is easy to understand.
Más respuestas (0)
Ver también
Categorías
Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!