我想知道怎么分离具有周期倍数的频率成分
如题我现在有一仿真信号
包含两个系列的特征,但是这两个频率之间存在一定的比例关系前者频率分量多但是幅值小,而后者频率分量少而幅值大。我想通过一定的方法对这两个信号进行分离成不知道有没有好的方法,求大神出现!附:我曾经尝试过,EMD,EEMD等分解方法,效果微弱。
自己顶一下了只能,要不就沉了!{:4_72:}{:4_72:} 尝试别的滤波器了吗 陌影 发表于 2017-1-10 14:58
尝试别的滤波器了吗
没有,有什么推荐的么? lbtv 发表于 2017-1-10 15:53
没有,有什么推荐的么?
例如高通 低通带通 。。。你是用matlab做的仿真吧 陌影 发表于 2017-1-11 08:54
例如高通 低通带通 。。。你是用matlab做的仿真吧
我怎么感觉通过常用的滤波手段无法实现这种频率分量的提取呢
比如上图,可以看到比较明显的重叠周期成分,但是尝试了一些方法却没有效果!
fft可否?
失心控 发表于 2017-1-19 09:05
我这个信号的采样率是正常的!主要是特征频率之间存在比例关系! lbtv 发表于 2017-1-21 16:36
我这个信号的采样率是正常的!主要是特征频率之间存在比例关系!
那常用的滤波手段可能效果不明显 k=4和l=1,加起来就是cos(4*pi*kt),分离不出来。 {:{40}:}哎哎{:{40}:} 可试试盲源卷积算法 关键是你采集的原始振动波形信号有没有周期倍数的频率成分?应该是通过傅里叶变换获得。 分离信号基本上是根据信号的频谱不同,比如第一个信号,占用频带是1000~2000Hz。第二个信号占用频带是3000~4000Hz,我们只要把信号做FFT变换,然后在频域上拿到两个信号的各自分量,再用IFFT反变换回时域,就能重组出两个信号了。
但是前提是这两个语音的频带不能叠在一起
不多说了,举个例子,sin(t)+sin(10t),这两个信号的频带显然不同,可以分离
clc;
clear;
t=0:0.1:10;
x1=sin(t);
x2=sin(10*t);
x=x1+x2;
X_f=fft(x);
figure (1)
subplot(2,1,1);
plot(x);
xlabel('time')
title('x1+x2 (time domain)')
subplot(2,1,2);
plot(abs(X_f));
xlabel('frequency')
title('x1+x2(frequency domian)')
X1_f=X_f;
X1_f(10:95) = 0;
X2_f=X_f;
X2_f(1:9)=0;
X2_f(96:end)=0;
x1_reconstruc = ifft(X1_f);
x2_reconstruc = ifft(X2_f);
figure (2)
subplot(2,1,1);
plot(x1);
title('Original x1')
subplot(2,1,2);
plot(real(x1_reconstruc));
title('Reconsturctured x1')
figure (3)
subplot(2,1,1);
plot(x2);
title('Original x2')
subplot(2,1,2);
plot(real(x2_reconstruc));
title('Reconsturctured x2')
仅供参考