liminwang0311 发表于 2010-7-29 11:28

mesh或surf画三维图时,x和y参数可以随意调换吗

我想画用wavelet处理数据后的三维图,用surf画的是下面附件的样子。现在我想把x轴显示为scale数据,y轴显示为length数据,应该怎么做呢?如果直接更改输入参数的位置surf(t,s,c);改为surf(s,t,c);则出错
??? Error using ==> surf at 78
Data dimensions must agree.

Error in ==> detect at 182
surf(s,t,c);

应该怎么解决呢,往大侠指点,谢谢

[ 本帖最后由 ChaChing 于 2010-7-31 22:53 编辑 ]

gongzuobiji 发表于 2010-7-31 14:42

给c转置下试试

ChaChing 发表于 2010-7-31 22:52

回复 楼主 liminwang0311 的帖子

个人水平专业有限, 看不太清LZ问的!?
基本上参数只要符合函数输入需求即可!
Data dimensions must agree, 表示参数间维数有问题!

liminwang0311 发表于 2010-8-1 09:24

回复 板凳 ChaChing 的帖子

可能是我没说清楚,你看我那张图,x轴是length,y轴是scale,我现在想让x轴显示scale而y轴显示length,用surf或mesh函数做得到吗?

ChaChing 发表于 2010-8-1 09:50

回复 地板 liminwang0311 的帖子

我想应该可以! 但参数间维数应一致
建议楼主简化下举例, 如此好试! :loveliness:

求助完整格式:出错代码和出错提示 !!

liminwang0311 发表于 2010-8-1 19:42

回复 5楼 ChaChing 的帖子

好的,我把代码贴出来,
正确的代码是:
%构造一个信号
t1=1:500; t2=501:1000; t3=1001:1504;
s1=sin(0.02*t1); s2=sin(0.2*t2); s3=sin(0.02*t3);
t=; x=;
%作出这个信号图像
figure; subplot(221); plot(x); axis tight;%坐标范围设为数据上下限
title('original signal')

%用bior3.9小波对信号进行连续小波变换,尺度为2
s=2:2:10; c = cwt(x,s ,'bior3.9');
subplot(223); surf(t,s,c); axis tight;%坐标范围设为数据上下限
title('Three-dimensional plot of the wavelet transform of thedisplacement data');
xlabel('length','fontsize',10,'rotation',15);
ylabel('scale','fontsize',10,'rotation',-28);
zlabel('wavelet coefficients','fontsize',10);
运行这段代码就可以画出x轴为length,y轴为scale的图。

把surf的参数t 和s对调则出现下面的错误:

??? Error using ==> surf at 78
Data dimensions must agree.

Error in ==> test at 21
surf(s,t,c);

bior3.9小波的尺度为2-10

[ 本帖最后由 ChaChing 于 2010-8-2 00:06 编辑 ]

ChaChing 发表于 2010-8-2 00:08

2F说的, 楼主没试吗?
subplot(223); surf(s,t,c'); axis tight;%坐标范围设为数据上下限
页: [1]
查看完整版本: mesh或surf画三维图时,x和y参数可以随意调换吗