Effacer les filtres
Effacer les filtres

How to do counter in matlab?

10 vues (au cours des 30 derniers jours)
Hello Matlab
Hello Matlab le 21 Avr 2015
Modifié(e) : Stephen23 le 25 Juin 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 commentaires
James Tursa
James Tursa le 21 Avr 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 le 21 Avr 2015
I edit the question, I hope it makes sense now!!!

Connectez-vous pour commenter.

Réponses (3)

Image Analyst
Image Analyst le 21 Avr 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 commentaires
Hello Matlab
Hello Matlab le 21 Avr 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 le 21 Avr 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

Connectez-vous pour commenter.


James Tursa
James Tursa le 21 Avr 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 le 21 Avr 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 commentaires
James Tursa
James Tursa le 22 Avr 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 le 22 Avr 2015
Modifié(e) : Stephen23 le 25 Juin 2019

Connectez-vous pour commenter.

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by