Time-shift after fft & filter?
Afficher commentaires plus anciens
I tried to implement a simple LP filter on an audio file, but I'm slightly confused by the apparent shifting of the signal in the time domain. What have I overlooked / misunderstood? Thanks.
filename = 'Raw_Wav_20180425_000226.wav';
[y,fs] = audioread(filename);
subplot(1,2,1)
plot(t,y)
xlabel('Time (s)')
ylabel('Amplitude')
title('Raw')
fmax1 = 40; %end of pass band
fmax2 = 60; %end of transition band
nt = length(y);
t = [0:nt-1]/fs;
y = y-mean(y);
dF = fs/nt;
f = -fs/2:dF:fs/2-dF;
yft = fftshift(fft(y));
I = find(abs(f)>fmax2);
yft(I) = 0;
I = find( abs(f)>fmax1 & abs(f)<=fmax2 );
yft(I) = yft(I) .* hanning(length(I));
y = ifftshift(ifft(yft));
subplot(1,2,2)
plot(t,y)
xlabel('Time (s)')
ylabel('Amplitude')
title('Post-filter')
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Fourier Analysis and Filtering dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!