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

답변 (2개)

Guillaume
Guillaume 2015년 3월 9일
편집: Guillaume 2015년 3월 9일

0 개 추천

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 2015년 3월 9일
편집: Michael Haderlein 2015년 3월 9일

0 개 추천

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

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

질문:

2015년 3월 9일

편집:

2015년 3월 9일

Community Treasure Hunt

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

Start Hunting!

Translated by