Exclude matrix diagonal in for loop
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
Let's say I have a 20x20 matrix for which I wish to run some formulas over a loop. But I wish to exclude the main diagonal (1,1 to 20,20) from the for loop.
I came up with:
for j=2:20
for i:(j-1)
Any thoughts please?
Thanks
0 Kommentare
Antworten (2)
Guillaume
am 9 Mär. 2015
Bearbeitet: Guillaume
am 9 Mär. 2015
Your second for is not going to do much. This is one way to do it:
for row = 1:size(matrix, 1) %use better names than i or j and don't hardcode sizes
for col = 1:size(matrix, 2)
if col ~= row %if not on diagonal
%do calculation
end
end
end
However, if you can vectorise your calculation and forego the loops entirely that would be even better.
0 Kommentare
Michael Haderlein
am 9 Mär. 2015
Bearbeitet: Michael Haderlein
am 9 Mär. 2015
In case you cannot vectorize the problem, why don't you simply check for equality?
for cnt1 = 1:20
for cnt2=1:20
if cnt1~=cnt2
%calculations
end
end
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices 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!