滤波后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) 请哪位高手给解答一下谢谢啦 这个是 选择范围的问题吧,你试下改为
fmin=3.5; %根据傅立叶谱来判断各阶模态频率的范围,选取合适的滤波频率,单位:Hz
fmax=4.5;
还有,楼主你用的是什么滤波方法啊? 楼主用的好像是 频域滤波 再有,楼主之所以会出现这样的问题,主要是你的截止频率间隔设定的太小了,以至于EMD会认为所得到的滤波信号就是一个单分量信号,能否将其截止频率间隔设大点再试试呢 我要分析一组振动信号,可是存在噪声,请问如何先进行滤波,在进行EMD?
页:
[1]