MATLAB Answers

How to cross two 2d plots in a 3d view?

2 ビュー (過去 30 日間)
Philippe Corner
Philippe Corner 2018 年 11 月 1 日
編集済み: Stephan 2018 年 11 月 1 日
Using this code I acquire this figure 1 and figure 2 (attached). Do you have any idea about how to cross this figures in order to analyse data from a "3d" perspective? something like figure 3 (attached)
clear all
%plot1
%data
M1=[0.000000 1188.000000 340.216815
6.500000 1188.500000 331.115127
13.000000 1189.000000 325.858265
19.500000 1189.000000 330.567837
26.000000 1190.000000 333.606362
32.500000 1191.000000 329.369873
45.500000 1192.500000 315.677226
52.000000 1193.000000 316.240698
58.500000 1193.500000 330.965579
65.000000 1194.000000 341.223389
71.500000 1195.000000 332.790136
84.500000 1156.616455 2099.999905
91.000000 1204.000000 310.592890
104.000000 1160.572510 2099.999905
110.500000 1207.500000 305.550069
117.000000 1163.173218 2099.999905
123.500000 1210.500000 310.125440
130.000000 1165.852295 2099.999905
136.500000 1213.500000 313.500583
143.000000 1168.562500 2099.999905];
%upper limit
h1=[0.0 1188.0
6.5 1188.5
13.0 1189.0
19.5 1189.0
26.0 1190.0
32.5 1191.0
39.0 1192.0
45.5 1192.5
52.0 1193.0
58.5 1193.5
65.0 1194.0
71.5 1195.0
78.0 1198.0
84.5 1202.5
91.0 1204.0
97.5 1205.0
104.0 1206.5
110.5 1207.5
117.0 1208.0
123.5 1210.5
130.0 1212.0
136.5 1213.5
143.0 1217.0
149.5 1218.5];
%plot2
%data
M2=[0.000000 1217.000000 594.503284
4.500000 1183.886353 2099.999905
9.000000 1220.000000 1071.599126
13.500000 1184.565430 2099.999905
18.000000 1219.000000 435.631812
22.500000 1185.150635 2099.999905
24.500000 1217.555542 320.541441
27.000000 1185.427490 2099.999905
31.500000 1216.000000 300.000012
36.000000 1185.981445 2099.999905
40.500000 1215.000000 306.778669
45.000000 1186.629272 2099.999905
49.500000 1216.000000 300.000012
54.000000 1187.214478 2099.999905
58.500000 1215.000000 300.000012
63.000000 1187.893555 2099.999905
67.500000 1218.000000 335.902870
72.000000 1188.572510 2099.999905
76.500000 1220.000000 359.615386
81.000000 1189.282715 2099.999905
85.500000 1224.000000 1382.480264
90.000000 1189.992920 2099.999905
94.500000 1225.000000 1206.023455
99.000000 1190.578125 2099.999905];
%upper limit
h2=[0.0 1217
4.5 1217
9.0 1220
13.5 1219
18.0 1219
22.5 1218
27.0 1217
31.5 1216
36.0 1215
40.5 1215
45.0 1216
49.5 1216
54.0 1215
58.5 1215
63.0 1217
67.5 1218
72.0 1219
76.5 1220
81.0 1222
85.5 1224
90.0 1225
94.5 1225
99.0 1224
103.5 1225];
figure (1)
X1=M1(:,1);
Y1=M1(:,2);
Z1=M1(:,3);
[x1,y1]=meshgrid(linspace(min(X1),max(X1),100),linspace(min(Y1),max(Y1),100));
z1=griddata(X1,Y1,Z1,x1(:),y1(:));
[c,h]=contourf(x1,y1,reshape(z1,100,100));
hold on
plot(h1(:,1),h1(:,2),'k','linewidth',4) %upper limit
figure (2)
X2=M2(:,1);
Y2=M2(:,2);
Z2=M2(:,3);
[x2,y2]=meshgrid(linspace(min(X2),max(X2),100),linspace(min(Y2),max(Y2),100));
z2=griddata(X2,Y2,Z2,x2(:),y2(:));
[c,h]=contourf(x2,y2,reshape(z2,100,100));
hold on
plot(h2(:,1),h2(:,2),'k','linewidth',4) %upper limit

  0 件のコメント

サインインしてコメントする。

回答 (1 件)

Stephan
Stephan 2018 年 11 月 1 日
Hi,
try:
surf(x1,y1,reshape(z1,100,100))
hold on
surf(x2,y2,reshape(z2,100,100))
that give the following result:
.
I suspect that is what you wanted.
Best regards
Stephan

  4 件のコメント

表示 1 件の古いコメント
Stephan
Stephan 2018 年 11 月 1 日
how do you determine the cross line of both?
Philippe Corner
Philippe Corner 2018 年 11 月 1 日
I was thinking on way where we could set any x coordinate from a figure to do it. for example to cross them at x=55 at the first figure. It does not matter that both black lines do not match at the same vertical axe..
thanks Stephan.
Stephan
Stephan 2018 年 11 月 1 日
Not sure what you mean - i guess:
surf(50*ones(length(y1)),y2,reshape(z1,100,100))
hold on
surf(x2,y2,reshape(z2,100,100))
gives:

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by