从信号中删除频率范围

时间:2019-05-12 21:21:26

标签: signals signal-processing fft frequency phase

我有一个信号,我想从中去除20Hz的频率。我只是将0应用于频率仓。在fft箱中,我可以看到所有与-20 Hz至20 Hz相关的频率箱均已归零。但是当我执行real(ifft)时,信号不变。另外,当我进行频谱分析时,我看不到任何幅度变化。

还有另一种消除频率的方法吗?

请参见下面的代码

[r c]=size(testshot3.traces(:,1));
slen=r;

fs=500;% sampling freq
nfft = 2^nextpow2(2*slen); % To use max. computational efficiency of FFT

fax = fs*(-nfft/2:nfft/2-1)'/nfft; %freq bins

len_fax=length(fax); 

xx=find( (fax >= -20) & (fax <= 20));%frequency range that i like to remove

x=fft(testshot3.traces(:,ii),nfft); %fft of orignal signal

for i= 1:1:len_fax %scan through all frequency bins
    if (i>=xx(1))&&(i<=xx(end)) %finding indices of fax btw -20 to 20 freq
        x(i,:)=0;
    end
end
xx=ifft(x);
xfil=real(xx(1:slen,:));

原始信号: Original Signal

0 个答案:

没有答案