2014-06-19 122 views
0

我想繪製兩個具有相同索引的矩陣的所有元素。因此,如果兩個矩陣通過對稱矩陣循環

A = [1 4; 4 5]B = [2 3; 3 6]給出

被plottet會(1/2)(4/3)(4/3)(5/6)的對。

但是我的代碼中的矩陣是對稱的,我想避免遍歷整個矩陣(如果我們已經繪製了(4/3),我會避免循環通過這對值再次發生)。我怎樣才能做到這一點? 隨着當前的代碼:

for i = 1:size(A,1) 
    for j = 1:size(A,1)  
     plot(A(i,j),B(i,j)) 
    end 
end 

我明明有冗餘..

+0

是否要作爲三角形遍歷矩陣的一部分?如果是這樣的話,你應該從1循環到n,但是從j循環到n而不是從1到n。如果是這種情況,我現在會提供一個適當的答案。 – Eterm

+0

確切。所以如果我們有[0 1 2; 1 0 3; 2 3 0]和[0 5 6; 5 0 7; (0,0),(1,5),(2,6),(3,7),主對角線實際上都是(0,0)。 – Pegah

回答

2

你要遍歷只有一個矩陣的三角形。

您可以通過從1到n循環遍歷i,然後循環通過i到n來完成此操作。

這個迭代通過n(n + 1)/ 2而不是n * n個條目。

for i = 1:size(A,1) 
    for j = i:size(A,1)  
     plot(A(i,j),B(i,j)) 
    end 
end 
+0

我們忘記了「持有」命令(否則它只繪製一個點),否則完美。謝謝! – Pegah