我有一个信号,我想从中去除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,:));
原始信号: