Удалить частотный диапазон из сигнала - PullRequest
0 голосов
/ 13 мая 2019

У меня есть сигнал, и я хочу удалить из него частоту 20 Гц.Я просто применил 0 к частотным бинам.В бинах FFT я вижу все эти частотные бины, относящиеся к -20 Гц до 20 Гц, обнуляются.Но когда я делаю 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

...