2017-04-11 4 views
0

imagescコマンドを使用して2つの変数(2つの行列)をグラフ化するのに役立つ必要があります。行列のサイズは同じですが、正しい結果を得るためにコードを適切に記述する方法はわかりません。imagescコマンドを使用して2つの行列をグラフ化するにはどうすればよいですか?

私の問題では、x - axは地面の経度、y - axは垂直位置 - 深さ(Df) - これはTを計算しているので、T(Df)を意味します。一般的な考え方は温度プロファイルを得ることです。

第一:

clear all 
x=1:1:10; 

a=-0.5; b=0.5; 
topo = a + (b-a).*rand(1,10); 

df=-5:1:20; 

for i=1:length(x); 

d1=-5:1:topo(i);d1=d1'; 
d2=topo(i):1:20;d2=d2'; 
df=unique(vertcat(d1,d2)); 
d=df+topo(i); 

z=find(d<0); 
T1(z)= NaN; 

z=find(d>=0 & d<=20); 
T1(z)= 0.3*d(z).^2; 

%save into a matrix 
    Ti(:,i)=T1; 
Di(:,i)=df'; 
end 

hh=imagesc(x,df,Ti);colormap('jet'),set(hh,'AlphaData',~isnan(Ti)); 
set(gca,'YDir','reverse');hold on; 
plot(x,topo,'k');grid on; 

私は二つのことを試してみました。

Ti(:, i) = T1; 
Df(:, i) = df'; 

Cx{i} = T1; 
Cy{i} = df; 
Tf = [Cx; Cy]; 

hh = imagesc (x, Tf{:}); 

アンこのエラーが表示されます関数imagescでのエラー(線39) HH =画像(のvarargin {:}、 'CDataMapping'、 'スケーリングを');

第2位。

hh = imagesc (x, Df(:), T1(:)); 

なし。私はTiの各列をDfの対応するvalurに対してプロットする必要があるからです。

これは簡単ですが、私はそれを解決できました。誰かがこれで私を助けることができたら、私は多くのことを感謝します。

ありがとうございます!

Print screen of the problem

+0

'size(Df)= size(Ti)'の行はなんですか? –

+0

私はあなたがしようとしていることを非常に混乱しています。 'image'とその姉妹関数' imagesc'は行列を画像として表現するために使われます。代わりにグラフをプロットしたいと思うようです(つまり、ある変数を別の変数の関数として)。そうですか? –

+0

おそらくあなたは 'plot(Df(:)、T1(:))'を意図していますか? –

答えて

0

あなたは関数imagescのためのMatlabのヘルプになります。 関数imagesc(X、Y、C) - または - 関数imagesc( 'のXData'、X 'YDataを'、Y 'のCData'、C)

X - 水平座標のための1×Nベクトル

Y - 縦座標の1×Mベクトル

C - Nの各ポイントの強度を有するX Mの行列[X(I)、Y(J )]

関連する問題