2017-02-20 291 views
0

我想繪製一個使用三個矩陣的圖,但不知何故我無法理解。我有三個矩陣和一個數組。假設,如何在三維矩陣和數組中繪製MATlab中的二維圖?

A = 

    1  2  3 

    4  5  4 

    7  8  9 

B = 

    2  3 13 

    5 11 10 

    9  7  6 


C = 

    1  2  3 
    2  3 13 
    5 11 10 

和陣列

Y= [0.001 0.0002 0.0004]. 

現在我想要繪製它以這樣的方式,數組值應該是在Y軸上,而針對0.001,0.002和0.0004的矩陣值應佈置。例如 ,單行的y=0.001, A(1,1)=1, y=0.0002, B(1,1)=2 y=0.0004, C(1,1)=1

和類似的過程去使用A(i,j),B(i,j)c(i,j)點使用循環來繪製一個圖上的所有線。

感謝

+1

你的問題很混亂。你能嘗試重新翻譯嗎? –

+0

@AnderBiguri我有三個矩陣和一個數組,如上所示。現在我想繪製一個數組(0.001,0.0002,0.0004)這三個值應該位於y軸和x軸上的方式,矩陣A的第一個值應該相對於數組的0.001值繪製並且矩陣B的第一值應該相對於0.0002的陣列的第二值繪製並且類似地針對第三值繪製。 –

+0

我不明白。我,j代表什麼?軸x,y?你是否想將A的所有值與0.001相比,B的所有值都是0.0002,C的所有值都是0.0004?然後連接所有(i,j)對? – ana

回答

1

所以,第一個情節是plot([1,2,1],Y),下一個就是plot([2,3,2],Y)等等?

如果是這樣,你可以那樣做

X = cat(3,cat(3,A,B),C); 
X = reshape(permute(X,[3,1,2]),3,9); 
plot(X,Y,'--x'); 

這給這樣一個情節:

Resulting plot

難道這就是你要找的人?如果不是這樣,我不明白你的問題,我想請你重新修改它。

0

您可以創建3D數組(張量)並在循環中訪問它。

T(:,:,1) = A; 
T(:,:,2) = B; 
T(:,:,3) = C; 

figure; 
for idi = 1:size(A,1) 
    for idj = 1:size(A,2) 
     plot(squeeze(T(idi,idj,:)).',Y); hold on; 
    end 
end 

訪問第三維是不是最快的操作(因爲它們不是存儲在內存中的順序),如果矩陣是較大的,你可以考慮reshape

我不明白你想要矢量Y在x軸或y軸(這些情節都沒有意義),但我相信你可以從這裏修改代碼以滿足你的需求。