2017-04-11 1 views
0

imagesc 명령을 사용하여 두 변수 (두 행렬)를 그래프로 표시하는 데 도움이 필요합니다. 행렬의 크기는 같지만 올바른 결과를 얻으려면 코드를 적절하게 작성하는 방법을 모르겠습니다.imagesc 명령을 사용하여 두 행렬을 그래프로 표시하는 방법은 무엇입니까?

내 문제는 x 축은 땅 위의 경도이고 y 축은 수직 위치입니다. 깊이 (Df) - T를 계산하면 T (Df)를 의미합니다. 일반적인 아이디어는 온도 프로파일을 얻는 것입니다.

1 :

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를');

2nd.

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

아무 것도 작동하지 않았습니다. 왜냐하면 Ti의 각 열은 Df의 대응 열의 값에 대해 플롯되어 있어야하기 때문입니다.

이것은 쉬운 것처럼 보이지만 해결할 수 있습니다. 누군가가 이것으로 나를 도울 수 있다면 많이 감사 할 것입니다.

미리 감사드립니다.

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) 세로 좌표

C

1의 X M 벡터 - -

X - 수평 좌표

예 1의 X N 벡터 각 지점 [X (I)에 대한 강도를 가진 N x m 행렬 Y (j)]

관련 문제