eight
发表于 2007-3-11 19:37
原帖由 maxingcellar 于 2007-3-11 19:32 发表
eghit 我运行程序,一下子出了三张图 而且都没有座标轴,
>> x=wavread('a7501.wav');
>> x=x(1:1764);
>>= emd(x);
>> t = 1:1764;
>> varargout = emd_visu(x,t,imf);
看 ...
你的错误是指没有坐标轴吗?自己添加就可以了
maxingcellar
发表于 2007-3-11 19:42
添加?对不起能详细告知吗?步长设为0.01的时候有座标但是没图,而且程序还出现错误!
[ 本帖最后由 maxingcellar 于 2007-3-11 19:46 编辑 ]
eight
发表于 2007-3-11 19:46
原帖由 maxingcellar 于 2007-3-11 19:42 发表
添加?对不起能详细告知吗?步长设为0.01的时候有座标但是没图,而且程序还出现错误!
这些基本的绘图指令你还是参阅一下基础书吧,或者到matlab讨论区版块上下载置顶贴中的 faq.pdf
maxingcellar
发表于 2007-3-11 19:48
我的意思是座标怎么会消失?是因为我输入的不正确吗?
eight
发表于 2007-3-11 19:57
原帖由 maxingcellar 于 2007-3-11 19:48 发表
我的意思是座标怎么会消失?是因为我输入的不正确吗?
这是emd_visu.m的默认设置:
set(gca,'YTick',[])
set(gca,'XTick',[])
建议在使用之前,先把代码看懂
maxingcellar
发表于 2007-3-11 19:59
好的,谢谢eight,谢谢你不厌其烦的为我讲解!:handshake
maxingcellar
发表于 2007-3-12 23:05
eight问你一个问题,emd的IMF计算出来后,我想得到IMF与时间的关系,应该怎么做?谢谢
eight
发表于 2007-3-12 23:09
原帖由 maxingcellar 于 2007-3-12 23:05 发表
eight问你一个问题,emd的IMF计算出来后,我想得到IMF与时间的关系,应该怎么做?谢谢
看不懂。IMF就是关于时间的函数,不知道你所指的与时间的关系是什么意思
maxingcellar
发表于 2007-3-12 23:10
但是我用emd_visu.m打出来的图却是IMF与我取点数的关系?
>> x=wavread('a7501.wav');
>> x=x(1:1764);
>> = emd(x);
>> t = 1:1764;
>> varargout = emd_visu(x,t,imf);
eight
发表于 2007-3-12 23:19
原帖由 maxingcellar 于 2007-3-12 23:10 发表
但是我用emd_visu.m打出来的图却是IMF与我取点数的关系?
>> x=wavread('a7501.wav');
>> x=x(1:1764);
>>= emd(x);
>> t = 1:1764;
>> varargout = emd_visu(x,t,imf);
我估计你打开的a7501.wav文件没有包含时间信息,所以就只能默认从1开始,每个点一个时刻。
举个例子:
设 a.dat 文件有如下内容:
0.000000 0.006300
0.020000 0.003640
0.040000 0.000990
0.060000 0.004280
0.080000 0.007580
0.100000 0.010870
0.120000 0.006820
0.140000 0.002770
0.160000 -0.001280
0.180000 0.003680
0.200000 0.008640
0.220000 0.013600
0.240000 0.007270
0.260000 0.000940
0.280000 0.004200
0.300000 0.002210
0.320000 0.000210
0.340000 0.004440
0.360000 0.008670
0.380000 0.012900
0.400000 0.017130
0.420000 -0.003430
0.440000 -0.024000
0.460000 -0.009920
0.480000 0.004160
0.500000 0.005280
0.520000 0.016530
0.540000 0.027790
0.560000 0.039040
0.580000 0.024490
0.600000 0.009950
0.620000 0.009610
0.640000 0.009260
0.660000 0.008920
0.680000 -0.004860
则:
A = load('a.dat');
t = A(:,1)';
x = A(:,2)';
imf = emd(x,'t',t);
varargout = emd_visu(x,t,imf);
这时候 t 反应的就是时间信息,每个索引均与各 imf 的相对应
maxingcellar
发表于 2007-3-12 23:22
我明白了,但是时间我怎么出来呢,我的取样时间我算了为0.04秒,怎么加进去呢?
eight
发表于 2007-3-12 23:28
原帖由 maxingcellar 于 2007-3-12 23:22 发表
我明白了,但是时间我怎么出来呢,我的取样时间我算了为0.04秒,怎么加进去呢?
那设定一个开始时间a和结束时间b,t=a:0.04:b就可以了,不过要保证x的长度和t一样
maxingcellar
发表于 2007-3-12 23:31
eight,长度为1764 总时间为0.04 那我把t=0:0.04/1764:0.04这样可以吗
我试过了,这样不行!
[ 本帖最后由 maxingcellar 于 2007-3-12 23:45 编辑 ]
eight
发表于 2007-3-12 23:46
原帖由 maxingcellar 于 2007-3-12 23:31 发表
eight,长度为1764 总时间为0.04 那我把t=0:0.04/1764:0.04这样可以吗
可以吧,不过你试试t的长度是否1764,如果不是可能要修改一下t的起始时间
maxingcellar
发表于 2007-3-13 00:03
我试过了,这样不行!先睡了,明天再请教你,谢谢你!:loveliness:
[ 本帖最后由 maxingcellar 于 2007-3-13 00:06 编辑 ]