matlab中如何用小波变换画出时频图

2025-06-28 09:21:12
推荐回答(1个)
回答1:

这是设置的两段频率不同的正弦型信号的小波变换时频图,你可以参考一下。
clear all
clc
%---------》load data《------------------
for i=1:1000
if(i<400)
dat(i)=sin(2*pi/50*i);
else
dat(i)=sin(2*pi/20*i);
end
end
plot(dat)
SampFreq=30;
t=1:1:1000;
fmax = 0.5; % 最高分析频率(归一化频率)
fmin = 0.005; % 最低分析频率(归一化频率)
fb = 4 ; % 取cmor4-2小波进行实验,带宽参数为4
fc = 2; % 中心频率2Hz
totalscal = 512; % 所取尺度的数目
FreqBins = linspace(fmin,fmax,totalscal); % 将频率轴在分析范围内等间隔划分
Scales = fc./ FreqBins; % 计算相应的尺度参数
wcoefs = mymorletcwt(dat,Scales,fc,fb);
RealFreqBins = FreqBins; % 尺度所对应的实际频率
%%%%%%%%%%%%%%%%%%%%%%%%%方法的结果%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
pcolor(t,RealFreqBins,abs(wcoefs));
colormap jet;
shading interp;
axis([min(t) max(t) min(RealFreqBins) max(RealFreqBins)]);
colorbar;
ylabel('Frequency / Hz');
xlabel('Time / sec');