Способом, описанным в этой статье Export from Matlab_Экспорт из Матлаба требуемой части сигнала , создал несколько тестовых выборок сигнала. Их то и подаю на вход фильтра.
Первая тестовая выборка:
Тот же сигнал, но в Матлабе:
На выходе нашего первого фильтра-дециматора мы должны увидеть что-то подобное:
Входной сигнал - это смесь полезного с паразитными сигналами 13 и 20 кГц. Ниже приведено, как они подключаются в модели :
После подключения входного файла с отсчетами к точке останова и настройки всех графиков в Code Composer Studio, запускаем программу на отладку, и ждем. Стоит отметить, что ждем-с очень долго. Чтобы по данной технологии (с точками останова и загрузкой *.dat файлов) просчитать диапазон сигнала, полученный на картинке ниже - нужно около часа. =) Его можно потратить на оформления результатов и успокоения себя, дабы выйти из эйфорийного состояния, связанного с удачным завершением опытов.
Сравнение с выходом фильтра в Матлабе, дает уверенность в правильной работе (хотя для пущей уверенности позже подадим на него еще функцию Хэвисайда, “единичный скачок”, ступенчатую функцию) - так будет более правильно !
Самое время подать ступенчатую функцию на вход. Для начала в функции main() в месте объявления экземпляра фильтра изменяем коэффициент децимации с 10 на 1 (т.е. фильтра перестанет прореживать выходные отсчеты):
dsp::CFirFilter firFilter( FIR_coeff, BL, 1 );
Полученный отклик фильтра на ступенчатое воздействие:
Как видим, фильтр устойчивый!
Такой же отклик выдает нам Матлаб (FDAtool) для этого фильтра:
Теперь изучим импульсную характеристику (Impulse Response) реализованного фильтра. Для этого нужно на вход подать дельта-функцию Дирака, тогда выдаваемые фильтром отсчеты сигнала будут представлять собой импульсную характеристику фильтра. Но тогда придется в функции main() изменить коэффициент децимации с 10 на 1 (т.е. фильтра перестанет прореживать выходные отсчеты) в месте объявления экземпляра фильтра:
dsp::CFirFilter firFilter( FIR_coeff, BL, 1 );
Результаты:
Итого, импульсная характеристика идентична расчетной в FDATool Матлаба:
Для полноты картины мира подадим еще несколько тестовых сигналов: (здесь обратно нужно указать коэффициент децимации, равный 10)
Результат фильтрации:
В Матлабе аналогичный результат:
Не стоит переживать, вторая ступень фильтрации-децимации справится с шумом в сигнале (рисунок из модели Симулинка):
Комментариев нет:
Отправить комментарий