combining 3 for loops
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Nur Amalina
il 16 Mar 2020
Commentato: Sriram Tadavarty
il 17 Mar 2020
Hi, All!
I have 3 "for" loops but i confuse when combining one and another. I need vector u, depend on x(j)-x(i) and x(i,t)-x(i,t-1)
this is the best function i've tried before. So glad to know that anyone can correct and help me :)
for t=1:1000
for i=1:5
for j=1:5
u(i,j)= a1*adj2(i,j)*(x(j)- x(i))+a2*(x(i,t)-x(i,t-1));
end
end
u=sum(u,2)
end
3 Commenti
Bob Thompson
il 16 Mar 2020
Also, what exactly is the problem you're experiencing? Are you getting an error message, or are you just not getting the output you would expect. If the output is different, what does it look like, and how were you expecting it to be different?
To add to tmarske's point about the different forms of indexing, if x is a 2D array then x(j) - x(i) will return a reduced vector, while x(i,t) - x(i,t-1) will return a single element. This is not inherently a problem, depending on the size of a1, adj2, and a2, but MATLAB will not let you perform a '+' operation on two components of different sizes like that.
Risposta accettata
Sriram Tadavarty
il 17 Mar 2020
Modificato: Sriram Tadavarty
il 17 Mar 2020
Hi Nur,
If the code is updated to run from time t set from 2 to 1000, this should go away with the error you see.
The subtraction of x(j) and x(i) would only do it for the first five elements all the time. I think this is not the intention. It should be x(j,t) and x(i,t)
With these changes the code looks as such:
for t=2:1000
for i=1:5
for j=1:5
u(i,j,t)= a1*adj2(i,j)*(x(j,t)- x(i,t))+a2*(x(i,t)-x(i,t-1));
end
end
u=sum(u,2)
end
u = permute(u,[1 3 2]);
Hope this helps.
Regards,
Sriram
6 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!