Exclude matrix diagonal in for loop

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

0 Stimmen

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

0 Stimmen

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

Tags

Gefragt:

am 9 Mär. 2015

Bearbeitet:

am 9 Mär. 2015

Community Treasure Hunt

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

Start Hunting!

Translated by