本人研究信号处理算法,利用matlab对信号做分析和处理。以下是我做的一个matlab程序实例,特贴出来共享,一起探讨学习。该程序绘制了仿真信号的FFT频谱和功率谱,并调用emd分析方法,绘制了emd分解结果,以及瞬时包络和瞬时频率图,还有Hilbert-Huang谱和Hilbert边际谱。
matlab程序代码如下:
clear all;
clc;
%给定参数
fs=1000;
N=1000;
n=0:N-1;
t=n/fs;
%构造仿真信号
x=2*sin(2*pi*120*t)+(1+sin(2*pi*5*t)).*sin(2*pi*50*t+0.5*cos(2*pi*5*t));
%emd分解
imf=emd(x);
%绘制时域波形
figure,plot(t,x);xlabel('时间
t/s');ylabel('幅值');title('仿真信号时域波形');
%绘制FFT频谱
nfft= 2^nextpow2(length(t));%找出大于y的个数的最大的2的指数值
ff=fs*(0:nfft/2-1)/nfft;�T变换后对应的频率的序列
fftx=fft(x,nfft);%求FFT变换
ps=fftx.*conj(fftx)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身
figure;
subplot(211),plot(ff,abs(fftx(1:nfft/2))*2/nff