필터 지우기
필터 지우기

Exclude matrix diagonal in for loop

조회 수: 5 (최근 30일)
Fred John
Fred John 2015년 3월 9일
편집: Michael Haderlein 2015년 3월 9일
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일
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일
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

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by