hitdely 发表于 2011-5-13 21:10

如何利用小波获得信号的频率和幅值 请高手指点 谢谢

如何利用小波获得信号的频率和幅值 请高手指点 谢谢
下面是我使用的小波进行时频分析,其中有什么错误请大家指出来,在程序里如何实现幅值的提取 ?
clear all;
clc;
fs=1024;                        %采样频率
f1=50;                        
f2=200;
t1=0;
t2=1;
t=t1:1/fs:t2;
FF=500;%显示的频率最大值
s1=sin(2*pi*f1*t);s2=sin(2*pi*f2*t);%两个不同频率正弦信号合成的仿真信号
s=;
% s=s1+s2;
% fs=1000;t1=1:300;t2=301:600;t3=601:1024;
% x1=sin(2*pi*50*t1/fs);
% x2=sin(2*pi*100*t2/fs);
% x3=sin(2*pi*200*t3/fs);
% x=;
% t=;
   %%%%%%%%%%%%%%%%%小波时频图绘制%%%%%%%%%%%%%%%%%%
wavename='cmor3-3';
totalscal=256;                  %尺度序列的长度,即scal的长度
wcf=centfrq(wavename);            %小波的中心频率
cparam=2*wcf*totalscal;         %为得到合适的尺度所求出的参数
a=totalscal:-1:1;
scal=cparam./a;                   %得到各个尺度,以使转换得到频率序列为等差序列
coefs=cwt(s,scal,wavename);       %得到小波系数
f=scal2frq(scal,wavename,1/fs);   %将尺度转换为频率
% imagesc(t,f,abs(coefs));          %绘制色谱图
colorbar;
contour(t,f,abs(coefs));
set(gca,'xlim',,'ylim',);
% Create xlabel
xlabel('{\itt}/s','FontSize',10.5,'FontName','Times New Roman');
% Create ylabel
ylabel('{\itf}/Hz','FontSize',10.5,'FontName','Times New Roman');

title('小波变换时频图','FontSize',10.5,'FontName','仿宋');

qizijun 发表于 2011-5-29 15:14

f=scal2frq(scal,wavename,1/fs);   %将尺度转换为频率
下面加个m=abs(f)试试?

gyksmile 发表于 2011-10-25 10:42

回复 1 # hitdely 的帖子

楼主,你最终算出来结果了吗,我也用了破凰这个方法,但是对于实际信号,效果并不好,可以交流一下啊

jsguyudong 发表于 2011-10-26 11:24

很明显有问题的,你再仔细看下吧
页: [1]
查看完整版本: 如何利用小波获得信号的频率和幅值 请高手指点 谢谢