реклама на сайте
подробности

 
 
> Децимирующий КИХ фильтр, Завал АЧХ после децимации
ilynxy
сообщение Oct 18 2014, 10:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 11-04-10
Пользователь №: 56 562



Доброго всем.

Уважаемые! Поясните пожалуйста, почему после децимирующего FIR "классический" анализ ответа фильтра на ступеньку (единичная функция) выдаёт неправильные результаты. А анализ ответа на ГКЧ (или просто на набор синусоид) -- правильные.

Вот код MATLAB, где я моделирую подобное измерение:
Код
% классическая ступенька
x = [zeros(1, 1024*m) ones(1, 1024*m)];

% Фильтр на ~1/4 исходной полосы, с подавлением 100 dB
Fp  = 0.20;
Fst = 0.25;
Ap  = 0.0001;
Ast = 100;

hf = design(fdesign.lowpass('Fp,Fst,Ap,Ast', Fp, Fst, Ap, Ast));

% Фильтруем сигнал
y = filter(hf, x);

% Децимируем в 4 раза (имеем право, теорема Котла не нарушена, отрезали
% всё что выше с помощью FIR фильтра)
k = 4;
y_decim = downsample(y, k);

% классика жанра: FFT от дифференциала ответа на ступеньку
PRy = 20*log10(abs(fft(diff(y))));
% и для децимированного сигнала
PRy_decim = 20*log10(abs(fft(diff(y_decim))));

% Рисуем спектр
Fx = [0:length(PRy)-1] / length(PRy) * 2;
Fx_decim = [0:length(PRy_decim)-1] / length(PRy_decim) / k * 2;
plot(Fx, PRy, Fx_decim, PRy_decim);


И получается, что после децимации дифференциал ответа на ступеньку даёт завал АЧХ в конце где-то на 3 dB. Если поэкспериментировать с децимацией (например, сделать в два раза), то завал уменьшится.


Собственно вопрос: почему так происходит?
И попутный вопрос: как исследовать характеристики фильтра "в живой природе"? Получается, что если фильтр децимирующий, то исследовать его характеристики методом подачи "единичной функции" нельзя? В более общем случае: если я не знаю характеристики системы и мне нужно построить её АЧХ, то я не имею права исследовать воздействуя на неё единичной функцией и получая спектр дифференциала ответа?

Сообщение отредактировал ilynxy - Oct 18 2014, 11:48
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Oct 18 2014, 10:29
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



1. Кто вас научил исследовать фильтры с помощью функции Хевисайда вместо дельта-функции?
2. Как модератор предлагаю вам самостоятельно убрать нарушения правила форума 2.1в, до того как этим займется модератор раздела.


--------------------
Go to the top of the page
 
+Quote Post
ilynxy
сообщение Oct 18 2014, 12:28
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 11-04-10
Пользователь №: 56 562



Цитата(des00 @ Oct 18 2014, 14:29) *
1. Кто вас научил исследовать фильтры с помощью функции Хевисайда вместо дельта-функции?
Возможно я что-то плохо понимаю. Вот как я это представляю:
а) у меня есть чёрный ящик с передаточной функцией y = H(x);
б) мне необходимо получить АЧХ и ФЧХ этого чёрного ящика;
в) в идеальном моделировании на вход подаётся дельта-функция и по ответу делаются выводы
в1) в неидеальном мире дельта-функцию имитировать сложно, более того, я знаю, что чёрный ящик содержит АЦП и КИХ-фильтр, поэтому я принимаю решение подать на вход функцию Хэвисайда. Исходя из того что дельта-функция d(x) есть производная от функции Хевисайда Hevi'(x), я делаю предположение что, y = H(d(x)) = H'(Hevi(x)). Иными словами, ответ передаточной функции на дельта импульс равен дифференциалу ответа передаточной функции на функцию Хэвисайда. Очевидно, что это неверно в общем случае. Однако во множестве источников предлагается такой метод, наряду с использованием генератора качающейся частоты (теста синусоидами на разных частотах).

Характер полученной АЧХ я могу объяснить и понимаю, почему он получается "заваленым". После децимации дифференциал от функции Хевисайда получается усреднённым по степени децимации (то есть усреднение по двум отсчётам в случае децимации в два раза или по четырём в случае децимации в четыре раза). И выходная характеристика получается произведением АЧХ КИХ фильтра и АЧХ "усреднятеля по двум/четырем/n-отсчётам" (это sinc функция). Собственно завал на графике и есть спад sinc функции.

Отсюда возникает вопрос: а как всё-таки правильно исследовать АЧХ/ФЧХ чёрного ящика имея генератор сигналов и осциллограф/рекордер? Если исследовать дельта-функцией, то какой длительности она должна быть? Если исследовать функцией Хэвисайда, то по очевидным причинам дифференциал ответа на функцию Хэвисайда в общем случае не равен ответу на дельта-функцию. Если исследовать с помощью ГКЧ упираемся в неидеальность генератора (всё-таки сгенерировать ступеньку с условно бесконечным спектром несколько проще чем синусоиды на разных частотах).


Цитата(des00 @ Oct 18 2014, 14:29) *
2. Как модератор предлагаю вам самостоятельно убрать нарушения правила форума 2.1в, до того как этим займется модератор раздела.
Если честно, я не понял, что именно нарушено? Грамматика, содержание?
Go to the top of the page
 
+Quote Post
andyp
сообщение Oct 18 2014, 13:15
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(ilynxy @ Oct 18 2014, 16:28) *
Возможно я что-то плохо понимаю. Вот как я это представляю:
а) у меня есть чёрный ящик с передаточной функцией y = H(x);
б) мне необходимо получить АЧХ и ФЧХ этого чёрного ящика;
в) в идеальном моделировании на вход подаётся дельта-функция и по ответу делаются выводы
в1) в неидеальном мире дельта-функцию имитировать сложно, более того, я знаю, что чёрный ящик содержит АЦП и КИХ-фильтр, поэтому я принимаю решение подать на вход функцию Хэвисайда. Исходя из того что дельта-функция d(x) есть производная от функции Хевисайда Hevi'(x), я делаю предположение что, y = H(d(x)) = H'(Hevi(x)). Иными словами, ответ передаточной функции на дельта импульс равен дифференциалу ответа передаточной функции на функцию Хэвисайда. Очевидно, что это неверно в общем случае. Однако во множестве источников предлагается такой метод, наряду с использованием генератора качающейся частоты (теста синусоидами на разных частотах).

Характер полученной АЧХ я могу объяснить и понимаю, почему он получается "заваленым". После децимации дифференциал от функции Хевисайда получается усреднённым по степени децимации (то есть усреднение по двум отсчётам в случае децимации в два раза или по четырём в случае децимации в четыре раза). И выходная характеристика получается произведением АЧХ КИХ фильтра и АЧХ "усреднятеля по двум/четырем/n-отсчётам" (это sinc функция). Собственно завал на графике и есть спад sinc функции.

Отсюда возникает вопрос: а как всё-таки правильно исследовать АЧХ/ФЧХ чёрного ящика имея генератор сигналов и осциллограф/рекордер? Если исследовать дельта-функцией, то какой длительности она должна быть? Если исследовать функцией Хэвисайда, то по очевидным причинам дифференциал ответа на функцию Хэвисайда в общем случае не равен ответу на дельта-функцию. Если исследовать с помощью ГКЧ упираемся в неидеальность генератора (всё-таки сгенерировать ступеньку с условно бесконечным спектром несколько проще чем синусоиды на разных частотах).


Во-первых внутри downsample тоже используется ФНЧ (скорее всего c ИХ вида sinc, умноженный на окно), полоса которого уже чем 0.25 Fs. Отсюда завал на 6 dB. Во-вторых дециматор не является LTI системой (linear time invariant, не знаю как по-русски). В спектре выходного сигнала после него появляются составляющие, которых до него там не было. Зачем тогда говорить про АЧХ-ФЧХ...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ilynxy   Децимирующий КИХ фильтр   Oct 18 2014, 10:19
||- - ilynxy   Цитата(andyp @ Oct 18 2014, 17:15) Во-пер...   Oct 18 2014, 16:27
|- - ViKo   Цитата(des00 @ Oct 18 2014, 13:29) Кто ва...   Oct 18 2014, 17:18
- - thermit   нет здесь никакой функции хевисайда. есть дискретн...   Oct 18 2014, 11:00
|- - des00   Цитата(thermit @ Oct 18 2014, 18:00) нет ...   Oct 18 2014, 12:20
|- - thermit   Цитата(des00 @ Oct 18 2014, 16:20) вы гур...   Oct 18 2014, 14:54
- - ViKo   Undefined function or variable 'm'. MATLAB...   Oct 18 2014, 14:25
|- - V_G   Цитата(ViKo @ Oct 19 2014, 00:25) Undefin...   Oct 18 2014, 15:12
- - ViKo   Если нарисовать разность между y_decim и у, прореж...   Oct 18 2014, 18:40
|- - thermit   Цитата(ViKo @ Oct 18 2014, 22:40) Если на...   Oct 18 2014, 19:31
|- - ViKo   Цитата(thermit @ Oct 18 2014, 22:31) не н...   Oct 18 2014, 20:31
|- - thermit   Цитата(ViKo @ Oct 19 2014, 00:31) Кодfigu...   Oct 18 2014, 20:54
- - ilynxy   http://electronix.ru/forum/index.php?showtopic=618...   Oct 18 2014, 22:10
|- - andyp   Цитата(ilynxy @ Oct 19 2014, 02:10) http:...   Oct 19 2014, 08:22
|- - ilynxy   Цитата(andyp @ Oct 19 2014, 12:22) Децима...   Oct 19 2014, 11:35
|- - dmitry-tomsk   Как-то странно вы матлаб пользуете. Фильтр цифрово...   Oct 20 2014, 07:50
|- - ilynxy   Цитата(dmitry-tomsk @ Oct 20 2014, 11...   Oct 20 2014, 13:49
- - ViKo   Цитата(ilynxy @ Oct 18 2014, 13:19) И пол...   Oct 19 2014, 10:48


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 12:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01487 секунд с 7
ELECTRONIX ©2004-2016