24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1195  |  回复: 9

lyaaron

银虫 (小有名气)

[求助] 求助Matab画3D的surf图已有1人参与



求救各位大神指点,  现在有一组X的数据,对应的有N个Y轴,Z轴为时间轴,如何画3D的surf图。。。。。有没有办法写一个code,以后可以直接加载数据文件,就自动作图。谢谢。。。。。

x          y1   y2   y3 y4  y5 y6 ........yn        

200    0.31175 .. ..
200.5 0.29865 ..
201 0.28611 ..
201.5 0.27413 ..
202 0.26272 ..
202.5 0.25186  ..
203 0.24156  ..

原数据在附件里面。。。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : Data.xlsx
  • 2014-03-29 05:08:53, 154.57 K

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
fegg7502: 金币+1, 鼓励交流 2014-03-29 08:40:36
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-03-29 08:35:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meatball1982

铜虫 (小有名气)

clear all
clc

data=xlsread('Data.xlsx');

x=data(2:end,1);
y=data(1,2:end);
z=data(2:end,2:end);

[X,Y]=meshgrid(x,y);
surf(X,Y,z','EdgeColor','none')
xlabel('x')
ylabel('y')
zlabel('t')
唉。还是学吧。
3楼2014-03-29 08:40:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meatball1982

铜虫 (小有名气)

结果
求助Matab画3D的surf图
output.png

唉。还是学吧。
4楼2014-03-29 08:43:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lyaaron

银虫 (小有名气)

引用回帖:
3楼: Originally posted by meatball1982 at 2014-03-29 08:40:19
clear all
clc

data=xlsread('Data.xlsx');

x=data(2:end,1);
y=data(1,2:end);
z=data(2:end,2:end);

=meshgrid(x,y);
surf(X,Y,z','EdgeColor','none')
xlabel('x')
ylabel('y')
zlabel('t')

谢谢解答:)

按照您的思路,我想把Z定义为t,就是第一行,1:end
Y是2:end,2:end,

clear all
clc

data=xlsread('Data.xlsx');

x=data(2:end,1);
y=data(2:end,2:end);
z=data(1,1:end);

[X,Y,Z]=meshgrid(x,y,z);
surf(X,Y,z','EdgeColor','none')
xlabel('x')
ylabel('y')
zlabel('t')

提示错误Error using surf (line 75)
Z must be a matrix, not a scalar or vector

Error in Surf3D (line 11)
surf(X,Y,z','EdgeColor','none')

谢谢
5楼2014-03-29 09:03:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meatball1982

铜虫 (小有名气)

引用回帖:
5楼: Originally posted by lyaaron at 2014-03-29 09:03:51
谢谢解答:)

按照您的思路,我想把Z定义为t,就是第一行,1:end
Y是2:end,2:end,

clear all
clc

data=xlsread('Data.xlsx');

x=data(2:end,1);
y=data(2:end,2:end);
z=data(1,1:end);

=meshgr ...

01.看你的z有多大。应该是维数不对。
02.meshgrid时,没必要有三个输入和输出。
03.surf时,注意维数要对应。

» 本帖已获得的红花(最新10朵)

唉。还是学吧。
6楼2014-03-29 09:26:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lyaaron

银虫 (小有名气)

送红花一朵
引用回帖:
6楼: Originally posted by meatball1982 at 2014-03-29 09:26:16
01.看你的z有多大。应该是维数不对。
02.meshgrid时,没必要有三个输入和输出。
03.surf时,注意维数要对应。...

Z 就是单纯的时间轴。EXCEL文件里面的第一行我把它高亮了。
x=data(2:end,1);
y=data(2:end,2:end);
z=data(1,1:end);

[X,Y]=meshgrid(x,y);
surf(X,Y,z','EdgeColor','none')
xlabel('x')
ylabel('y')
zlabel('t')

这样就提示Error using surf (line 75)
Z must be a matrix, not a scalar or vector

刚学matlab 小白见谅
7楼2014-03-29 09:36:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
lyaaron: 金币+25, ★★★★★最佳答案, 非常感谢帮助 2014-03-29 22:09:28
3楼的虫子已经做得很完善了,如果你要以时间t作Z轴的话,参考代码如下:
CODE:
function three_D_Surf
clear all;clc
data=xlsread('Data.xlsx');
t=data(1,2:end);
x=data(2:end,1);
y=data(2:end,2:end);
size(t)
size(x)
size(y)
[ti,xi]=meshgrid(min(t):(max(t)-min(t))/10/length(t):max(t),min(x):(max(x)-min(x))/10/length(x):max(x));
yi=interp2(t,x,y,ti,xi,'spline');
figure(1)
surf(xi,yi,ti),shading interp;
xlabel('x'),ylabel('y'),zlabel('t'),colorbar;

结果见附图1。
求助Matab画3D的surf图-1
附图1.png

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
8楼2014-03-29 09:50:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lyaaron

银虫 (小有名气)

引用回帖:
6楼: Originally posted by meatball1982 at 2014-03-29 09:26:16
01.看你的z有多大。应该是维数不对。
02.meshgrid时,没必要有三个输入和输出。
03.surf时,注意维数要对应。...

因为不是应助回帖,不能赠送金币非常感谢您的帮助
9楼2014-03-29 22:10:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meatball1982

铜虫 (小有名气)

没关系。
问题解决就好。
唉。还是学吧。
10楼2014-03-30 13:12:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lyaaron 的主题更新
信息提示
请填处理意见