Я пытаюсь найти обратное преобразование Фурье простого фильтра в Matlab. В первом случае (фильтр sinc/«кирпичная стена») я использую функцию , чтобы найти функцию во временной области, которая является центром с центром в t = 0.Обратный ФТ фильтра в Matlab
Теперь я хочу найти время -домена для простого чебышевского фильтра. Однако по какой-то причине нижеприведенный код дает мне импульсный отклик, где временная ось неверна. Должен ли я ожидать, что подобная нетерминальная функция с центром в t = 0?
fo = 10; %frequency of the sine wave
Fs = 100; %sampling rate
Ts = 1/Fs; %sampling time interval
t = -1+Ts:Ts:1-Ts; %sampling period
freq = -Fs/2:(Fs/length(t)):Fs/2;
%% Sinc with bandwidth = fo. This works!
y = 0.5*sinc(2*fo*t);
YfreqDomain1 = fft(y);
figure('Name','Brick wall sinc filter (freq)');
plot(freq(1:length(y)),2/length(y)*fftshift(abs(YfreqDomain1)))
y_ret1=ifft(YfreqDomain1,'nonsymmetric');
figure('Name','Brick wall sinc filter (time)');
plot(t,y_ret1);
%% Chebyshev with bandwidth fo. This gives me a strange result.
[b,a] = cheby1(6,0.1,2*fo/Fs); % 6th order, 0.1dB ripple
[YfreqDomain2 w] = freqz(b,a,length(t),'whole');
figure('Name','Chebyshev Filter (freq)');
plot(freq(1:length(YfreqDomain2)), 2/length(y)*fftshift(abs(YfreqDomain2)));
figure('Name','Chebyshev Filter (time)');
y_ret2=ifft(YfreqDomain2,'nonsymmetric');
plot(t,y_ret2);
Я думаю, что импульсная характеристика является желаемым результатом. Отфильтрованный сигнал 'y (t)' является сверткой между входным сигналом 'x (t)' и импульсной характеристикой 'h (t)', поэтому 'h (t) = IDFT [H (w)]' является импульсивный ответ. Или я там не прав? – hbaderts
Проблема, по-видимому, связана с различиями в фазе двух сигналов. 'plot (t, fftshift (ifft (abs (YfreqDomain2))) выглядит корректно и сопоставимо с той же командой с YfreqDomain1. –
Не причина вашей проблемы, но также стоит отметить, что YfreqDomain1 равен 199x1, тогда как YfreqDomain2 равен 1x199 –