MATLAB程序分析小波变换和FFT变换后信号的频率成分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
clear all
clc
close all
fs=1000;
T=20;
t=0:1/fs:T-1/fs;
f0=50;
f1=200;
% 线性调频信号
s=chirp(t,0,5,300);
figure
plot((0:length(s)-1)/length(s)*fs,abs(fft(s))); xlim([0 fs/2])
xlabel('f/Hz');
ylabel('幅度')
% 单频信号
% s=sin(2*pi*f0*t)+2*sin(2*pi*f1*t);
% s=sin(2*pi*f0*t);
y=s+0.5*randn(1,length(t)); % 加高斯白噪声
% 加泊松分布的噪声
% lambda = 0.5;
% r = poissrnd(lambda,1, length(t));
% y=s+r;
% 不同小波核函数及尺度的小波变换,可以选择操作
% c = cwt(s,1:32,'cgau4');
% c = cwt(s,[64 32 16:-2:2],'morl');
c = cwt(s,[3 18 12.9 7 1.5],'db2');
% c = cwt(s,1:32,'sym2');
% c = cwt(s,1:64,'sym4','abslvl',[100 400]);
Nfft=fs/4;
NN=(T*fs/Nfft);
for kk=1:5
for ii=1:NN
mu(:,ii)=abs(fft(s((1+(ii-1)*Nfft):(Nfft+(ii-1)*Nfft))));
aa(:,ii)=abs(fft(y((1+(ii-1)*Nfft):(Nfft+(ii-1)*Nfft))));
bb(:,ii)=abs(fft(c(kk,(1+(ii-1)*Nfft):(Nfft+(ii-1)*Nfft))));
end
figure
subplot(3,1,1)
pcolor((0:Nfft-1)/Nfft*fs,(1:NN)*Nfft/fs,mu.'); shading interp
xlim([0 fs/2])
% title(num2str(kk))
title('原始数据')
subplot(3,1,2)
pcolor((0:Nfft-1)/Nfft*fs,(1:NN)*Nfft/fs,aa.'); shading interp
xlim([0 fs/2])
% title(num2str(kk))
title('短时傅里叶变换')
subplot(3,1,3)
pcolor((0:Nfft-1)/Nfft*fs,(1:NN)*Nfft/fs,bb.'); shading interp
xlim([0 fs/2])
% title('sym2基小波变换')
title('db2基小波变换')
end
% plot(abs(fft(c)))