Why wont these matrices multiply
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
xo = [1; 2; 3; 4; 5; 6];
n = 7;
t = 0:15:2700
for i=length(t)
phi = [4-3*cos(n*t(i)) 0 0 sin(n*t(i))/n 2*(1-cos(n*t(i)))/n 0; 6*(sin(n*t(i))-n*t(i)) 1 0 2*(cos(n*t(i))-1)/n (4*sin(n*t(i))-3*n*t(i))/n 0; 0 0 cos(n*t(i)) 0 0 sin(n*t(i))/n; 3*n*sin(n*t(i)) 0 0 -2*sin(n*t(i)) 4*cos(n*t(i))-3 0; 0 0 -n*sin(n*t(i)) 0 0 cos(n*t(i))]
x(i) = phi*xo %This is where I am getting the error
end
I am trying to compute the Hill Clohessy Wiltshire equations for the given t, n, xo, and phi values.
The equation is x(t) = phi(t)*xo.
I am getting and error where x(i)=phi*xo that says
Subscripted assignment dimension mismatch.'
... when I do it outside of the for statement it works fine, but since I need to compute this for multiple ts i figured i would have to use a for statement. I am not very familer with matlab so please explain it to me as explicitly as you can.
0 comentarios
Respuestas (2)
Walter Roberson
el 11 de Dic. de 2015
Your phi creates a 5 x 6 matrix, which you then multiply by the 6 x 1 matrix x0. Algebraic matrix multiplication is used because you used the "*" operator. The result is going to be 5 x 1. You are trying to store the 5 x 1 array into a single memory location x(i).
I suggest you change
x(i) = phi * x0;
to
x(:,i) = phi * x0;
The result would then be a 5 x length(t) array in which the K'th column would correspond to t(K)
0 comentarios
Image Analyst
el 11 de Dic. de 2015
phi is a 5 by 6 array. xo is a 6 by 1 array. The matrix product is a 5 by 1 column vector. Yet you're trying to stuff it into x(i) which is a single element, not a 5 by 1 array.
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements 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!