wht0211 发表于 2010-7-31 16:42

滤波后EMD分解

我这有一个振动台试验数据,要进行模态识别,我对数据先进行了带通滤波处理,在进行EMD分解,但出现问题,滤波后得到的时域信号EMD分解不出来 IMF=emd(y)   得到的imf 和y一某一样,程序如下:
clear all
clc
fid=fopen('A7e1s1h.dat');      %读入数据,原始数据文件名在程序中输入
x=fscanf(fid,'%f',);
sf=255;                               %sf为采样频率
fmin=4;                           %根据傅立叶谱来判断各阶模态频率的范围,选取合适的滤波频率,单位:Hz
fmax=4.2;
status=fclose(fid);
n=length(x);
t=(0:1/sf:(n-1)/sf);                  %建立离散输出时间向量
nfft=2^nextpow2(n);                  % 建立FFT长度
ni=round(fmin*nfft/sf+1);         %四舍五入取整求最小截止频率对应数组元素的下标
na=round(fmax*nfft/sf+1);         %四舍五入取整求最大截止频率对应数组元素的下标
y=fft(x,nfft);                      %FFT变换,结果存于y
a=zeros(1,nfft);
a(ni:na)=y(ni:na);                   %将y的正频率带通内的元素赋值给a
a(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1);%将y的负频率带通内的元素赋值给a
y=ifft(a,nfft);                      %将滤波处理后数据恢复出时域信号
y=(real(y(1:n)));                  %取逆变换的实部n个元素为滤波结果列向量
subplot(2,1,1)                     %绘制滤波前的时程曲线图形
figure(1)
plot(t,x)
subplot(2,1,2)                     %绘制滤波后的时程曲线图形
plot(t,y)

%%%以上为输入数据和滤波过程%%%


imf=emd(y);            %调用EMD函数,得到滤波后的各阶IMF
emd_visu(y,1:length(y),imf)

wht0211 发表于 2010-7-31 16:44

请哪位高手给解答一下谢谢啦

wht0211 发表于 2010-7-31 16:46

secondye 发表于 2010-11-16 15:55

这个是 选择范围的问题吧,你试下改为
fmin=3.5;                           %根据傅立叶谱来判断各阶模态频率的范围,选取合适的滤波频率,单位:Hz
fmax=4.5;

secondye 发表于 2010-11-16 17:07

还有,楼主你用的是什么滤波方法啊?

峰之巅 发表于 2010-11-21 20:29

楼主用的好像是   频域滤波   

峰之巅 发表于 2010-11-21 20:32

再有,楼主之所以会出现这样的问题,主要是你的截止频率间隔设定的太小了,以至于EMD会认为所得到的滤波信号就是一个单分量信号,能否将其截止频率间隔设大点再试试呢

jiaguangfei 发表于 2012-11-5 20:10

我要分析一组振动信号,可是存在噪声,请问如何先进行滤波,在进行EMD?
页: [1]
查看完整版本: 滤波后EMD分解