Creating a loop for matrix multiplication
Mostrar comentarios más antiguos
Hi. I am trying to create a loop to multiply two matricies 40 times such that A*B0=B1 and A*B1=B2 and so on. So far I have got this
%
a=1-0.0277;
b=(1/15)*(1-0.008);
c=0.0215*a;
d=(14/15)*(1-0.008);
A=[[a,b];[c,d]];
B0=[6820;2140];
B=[B0];
for j=1:40
B1=A*B0;
B0=B1;
B=[B;B1];
disp(round(B(j)))
end
plot(B)
It does work but the result comes up as a list of all the values together and I want it to be a in a 1x2 matrix format.
Can anyone help? Thank you
5 comentarios
How can you have a 1x2 matrix--you've got two of them which you've concatenated together vertically with the ';'. You can get a 2x2 if you simply horizontally concatenate as
B=[B B1];
but there are four elements. This is for the first pass -- after that you've got a difficulty in dimensions going forward. It's not at all clear what your end objective is, so not sure how to suggest a correction.
Star Strider
el 11 de Mayo de 2014
Editada: Star Strider
el 11 de Mayo de 2014
B actually is in an array. Changing that line to:
disp(round(B(:,j)))
will display the new columns of B as they are created.
Else, I agree.
dpb
el 11 de Mayo de 2014
@Star== Whiff... :) Edited the bonehead comment out.
John D'Errico
el 12 de Mayo de 2014
NO NO NO NO. Do not create 81 different named variables. Learn to use arrays of variables. Your code will be the better for it. Your mental health a bit better too, because your code will not drive you crazy.
Respuestas (1)
Wojtek
el 13 de Mayo de 2014
1 comentario
Jos (10584)
el 13 de Mayo de 2014
for i=1:41,
C = [C B(2*i-1:2*i)]
end
is exactly the same as
C = B(1:82)
Categorías
Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!