2017-02-20 6 views
0

私は3つの行列を使って図をプロットしようとしていますが、何とか私は理解できませんでした。私は3つの行列と配列を持っています。今は0.001、0.002及び0.0004に対する行列値が配置されるべきであるそのアレイの値がy軸上になければならないような方法でそれをプロットする3つの行列と配列からMATLABに2Dプロットをプロットするにはどうすればよいですか?

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]. 

、仮定。例の場合は 、1行の場合はy=0.001, A(1,1)=1, y=0.0002, B(1,1)=2 y=0.0004, C(1,1)=1です。

と同様の処理がループを使用して1つの図にすべての線をプロットすると、A(i,j),B(i,j)c(i,j)点になります。

おかげ

+1

あなたの質問は非常に混乱しています。あなたはそれを言い換えることはできますか? –

+0

@AnderBiguri私は上記のように3つの行列と配列を持っています。ここでは、配列(0.001,0.0002,0.0004)の3つの値がy軸上にあり、x軸上にあるように、配列Aの最初の値を配列0.001の値に対してプロットする方法でプロットする行列Bの第1の値は配列の第2の値に対して0.0002であり、同様に第3の値に対してプロットされるべきである。 –

+0

わかりません。私は何を意味するのですか?軸x、y? Aのすべての値を0.001、Bのすべての値を0.0002、Cのすべての値を0.0004にプロットしますか?そして、すべての(i、j)ペアを接続しますか? – ana

答えて

1

だから、最初のプロットは、次のものがそうでplot([2,3,2],Y)あると、plot([1,2,1],Y)ているのですか?

Resulting plot

が、これはあなたが探していたものです:

もしそうなら、あなたはこのようなプロットを与えること

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

のようにそれを行うだろうか?そうでない場合、私はあなたの質問をよく理解していなかったし、あなたにそれを言い換えるように言いたい。

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軸上に配置したいと思っていませんでした(どちらのプロットも意味をなさない)が、あなたのニーズに合わせてここからコードを変更できると確信しています。

関連する問題