Filter löschen
Filter löschen

How to do counter in matlab?

10 Ansichten (letzte 30 Tage)
Hello Matlab
Hello Matlab am 21 Apr. 2015
Bearbeitet: Stephen23 am 25 Jun. 2019
I want to do just like the following Matlab, it returns error, how to fix it so Matlab can take it without errors?
load M.dat
t = 600;
q(1)=[1;0;0;0;0;0;0;0;0;0];
for i=1:t-1,
q(i+1) = q(i)*M;
end
I want to have qt in the end. q(1) is a matrix called q1, and I want q2 which is q(i+1) to be M*q1 , and q3 to be M*q2 and visa versa until we reach qt
  4 Kommentare
James Tursa
James Tursa am 21 Apr. 2015
Then q(i)*M is scalar*matrix, which is a matrix. How do you expect to store this into q(i+1), which is a scalar? You need to examine your equations and correct them to something that makes sense.
Hello Matlab
Hello Matlab am 21 Apr. 2015
I edit the question, I hope it makes sense now!!!

Melden Sie sich an, um zu kommentieren.

Antworten (3)

Image Analyst
Image Analyst am 21 Apr. 2015
You can't assign a 10-element column vector to a single element of q. Only one element can go into the first element of q, not 10.
  2 Kommentare
Hello Matlab
Hello Matlab am 21 Apr. 2015
This is not to determine the elements, this is a matrix called q0, and I want q1 to be M*q0 , and q2 to be M*q1 and visa versa until we reach qt.
Image Analyst
Image Analyst am 21 Apr. 2015
Try this:
M = 100 % Whatever...
t = 600;
q = zeros(1, t);
q(1)= 1;
for i=1:t-1,
q(i+1) = q(i)*M;
end

Melden Sie sich an, um zu kommentieren.


James Tursa
James Tursa am 21 Apr. 2015
I am still guessing here. Maybe this is what you want? (I am assuming M is square)
load M.dat
t = 600;
q = zeros(size(M,1),t);
q(1,1) = 1;
for k=2:t,
q(:,k) = M * q(:,k-1);
end
Each column of q is an intermediate answer, with q(:,t) being your final answer.
If you don't need all the intermediate answers, then simply
load M.dat
t = 600;
q1 = zeros(size(M,1),1);
q1(1) = 1;
qt = M^(t-1) * q1;

ALEX
ALEX am 21 Apr. 2015
Hello,
Play around with this, let me know if you have problems.
clear all M = 1.1; t = 600; q1 = zeros(10,1); q1(1)= 1;
val = q1*M;
for i=1:t-1
eval(['q' num2str(i+1) ' = val ']);
val = val*M;
end
Peace
  2 Kommentare
James Tursa
James Tursa am 22 Apr. 2015
Read this link to see why creating hundreds of variables q1, q2, ... etc in a loop is generally very bad programming practice:
Stephen23
Stephen23 am 22 Apr. 2015
Bearbeitet: Stephen23 am 25 Jun. 2019

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by