How to input and operate matrices using loop?
Ältere Kommentare anzeigen
I have 1000 matrices with names C1, C2 ...... C1000. I want to input these matrices, using loop, into my function and operate them in this way:
D1 = 0.5*sum(diag((C1)-(C2)*(inv(C2)-inv(C1))))
D2 = 0.5*sum(diag((C2)-(C3)*(inv(C3)-inv(C2))))
.
.
.
Dn = 0.5*sum(diag((Cn)-(Cn+1)*(inv(Cn+1)-inv(Cn))))
Then i want to store the values of D in a vector named Distance.
Distance=[D1,D2,....,Dn]
Can anyone help me?
5 Kommentare
David Miller
am 2 Jul. 2016
You can create arrays to store these matrices. You have a 1000x1 array called D where each row element corresponds to a certain matrix. Row m corresponds to D(m). Same thing with the C matrices. Create an array named C that is 1000x1 where each row element corresponds to a certain C, namely row element m corresponds to matrix C(m).
for i = 1:1000
D(i,1) = f(C(i,1));
end
Here f is the function you would like to use.
Umair Khan
am 3 Jul. 2016
Stephen23
am 4 Jul. 2016
@Umair Khan: David Miller has given your the correct solution to this task: use arrays and indexing.
You original question was about "input and operate matrices using loop": doing this is a slow and buggy way to write code, and should be avoided (e.g. by using arrays and indexing). Read this to know why:
Umair Khan
am 7 Jul. 2016
@Umair Khan: David Miller's solution is good (it should really have been submitted as an answer).
Antworten (1)
John
am 7 Jul. 2016
0 Stimmen
Concatenate all of your matrices to create a 3D array C and index the 3rd dimension using your loop variable i.e. C(:,:,1) would index the matrix C1
Kategorien
Mehr zu Matrix Indexing finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!