Filter löschen
Filter löschen

Exclude matrix diagonal in for loop

5 Ansichten (letzte 30 Tage)
Fred John
Fred John am 9 Mär. 2015
Bearbeitet: Michael Haderlein am 9 Mär. 2015
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

Antworten (2)

Guillaume
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.

Michael Haderlein
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

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by