В этом примере показано, как разработать классические lowpass БИХ в Simulink®.
Пример сначала представляет создание фильтра, используя filterBuilder
. Критическим параметром в этом проекте является частота отключения, частота, при которой степень фильтра уменьшается до половины (-3
дБ) номинальное значение полосы пропускания. Пример показывает, как заменить проект Butterworth на чебышевский или эллиптический фильтр того же порядка и получить более крутой крен за счет некоторой пульсации в полосе пропускания и/или стоповой полосе фильтра. В примере также исследуются проекты минимального порядка.
Затем в примере показано, как проектировать и использовать lowpass-фильтры в Simulink с помощью интерфейса, доступного из блока Lowpass Filter..
Наконец, в примере показан Variable Bandwidth IIR Filter, который позволяет вам изменить частоту отключения фильтра во время исполнения.
filterBuilder
filterBuilder
запускает пользовательский интерфейс для создания фильтров. filterBuilder
использует центрированный по спецификации подход, чтобы найти лучший алгоритм для желаемого отклика. Это также позволяет вам создать блок Simulink из заданного проекта.
Чтобы начать разработку блоков lowpass БИХ, используйте filterBuilder
, выполните команду filterBuilder('lp')
. Откроется диалоговое окно Проект.
Спроектируйте фильтр lowpass восьмого порядка Butterworth с частотой среза 5
кГц, принимая частоту дискретизации 44.1
КГц.
Установите Impulse response равным IIR
, Order mode для Specify
и Order для 8
. Чтобы задать частоту отключения, установите Frequency constraints равным Half power (3 dB) frequency
. Чтобы задать частоты в Гц, установите Frequency units равным Hz
, Input sample rate к 44100
, и Half power (3 dB) frequency к 5000
. Установите Design method равным Butterworth
.
Нажмите Apply. Чтобы визуализировать частотную характеристику фильтра, нажмите View Filter Response. Фильтр максимально плоский. В полосе пропускания или в полосе стопора нет ряби. Реакция фильтра находится в пределах маски спецификации (красная пунктирная линия).
Сгенерируйте блок из этого проекта и используйте его в модели. Откройте модель ex_iir_design
. В Filter Builder на вкладке Code Generation нажмите Generate Model. В окне Экспорт в Simulink задайте Block name следующим Butter
и Destination как Current
. Можно также принять решение создать блок с помощью базового элемента, таких как задержки и усиления, или использовать один из блоков DSP System Toolbox™ фильтрации. Этот пример использует блок фильтра.
Щелкните Realize model, чтобы сгенерировать блок Simulink. Теперь можно соединить входной и выходной порты блока с исходным и приемным блоками в ex_iir_design
модель.
В модели шумная синусоида, выбранная в 44.1
Через фильтр проходит кГц. Синусоида искажается Гауссовым шумом с нулем среднего и отклонением 10–5
. Запустите модель. Вид в анализаторе спектра показывает исходные и отфильтрованные сигналы.
Теперь спроектируйте Фильтр Чебышевский Тип 1. Конструкция Чебышёва I типа позволяет управлять полосой пропускания. Рябь до сих пор нет в полосе упора. Большая рябь обеспечивает более крутой откат. В этой модели пиковая рябь задается как 0,5 дБ.
На Main вкладке Filter Builder установите
Magnitude Constraints с Passband ripple
.
Passband ripple с 0.5
.
Design method с Chebyshev type I
.
Щелкните Apply и затем щелкните View Filter Response.
Изменяя масштабирование полосы пропускания, можно увидеть, что рябь содержится в области значений [-0,5, 0] дБ.
Подобно фильтру Баттерворта, можно сгенерировать блок из этого проекта, нажав Generate Model на вкладке Code Generation и затем щелкнув Realize model.
Чебышёвский проект II типа позволяет управлять затуханием в полосе задерживания. В полосы пропускания нет рябей. Меньшее затухание в полосе задерживания обеспечивает более крутой откат. В этом примере затухание в полосе задерживания 80
дБ. Установите
вкладку Filter Builder Main как показано на рисунке и нажмите Apply.
Нажмите View Filter Response.
Чтобы сгенерировать блок из этого проекта, на вкладке Code Generation, нажмите Generate Model, а затем нажмите Realize model.
Эллиптический фильтр может обеспечить более крутой крен по сравнению с предыдущими проектами, позволяя рябь как в полосе стопора, так и в полосе прохода. Чтобы проиллюстрировать такое поведение, используйте те же характеристики полосы пропускания и полосы упора, указанные в проектах Чебышёва. Установите вкладку Filter Builder Main как показано на рисунке и нажмите Apply.
Чтобы сгенерировать блок из этого проекта, на вкладке Code Generation, нажмите Generate Model, а затем нажмите Realize model.
Чтобы задать полосу пропускания и полосу упора с точки зрения частот и количества допустимой пульсации, используйте проект минимального порядка. В качестве примера проверьте, что для Order mode фильтра Баттерворта задано значение Minimum
, и установите Design method равным Butterworth
. Установите частоты полосы пропускания и полосы остановки на 0.1*22050
Гц и 0.3*22050
Гц, и неравномерность в полосе пропускания и затухание в полосе задерживания для 1
дБ и 60
дБ, соответственно. Фильтр седьмого порядка необходим, чтобы соответствовать спецификациям с проектом Butterworth. Следуя тому же подходу для других методов проектирования, можно проверить, что для проектов типов I и II Чебышева необходим фильтр пятого порядка. Для эллиптической конструкции достаточно фильтра четвертого проекта.
Этот рисунок показывает величине ответ для проекта Баттерворта седьмого порядка.
На диаграмму нулей и полюсов Баттерворта седьмого порядка проекта показана ожидаемая кластеризация 7 полюсов вокруг угла нули радиан на модуль окружности и соответствующих 7 нулей под углом, равным
В качестве альтернативы Filter Builder можно использовать блок Lowpass Filter в модели Simulink. Блок Lowpass Filter объединяет этапы проекта и реализации в один шаг. Создания фильтра свои коэффициенты с помощью эллиптического метода и позволяют создавать проекты минимального порядка и пользовательских порядков.
Блок Lowpass Filter используется в модели ex_lowpass
для фильтрации сигнала шумной синусоиды, дискретизированной в 44.1
кГц. Исходные и отфильтрованные сигналы отображаются в анализаторе спектра.
model = 'ex_lowpass'; open_system(model); set_param(model,'StopTime','1024/44100 * 1000') sim(model);
Блок Lowpass Filter позволяет вам проектировать фильтры, которые произвольно приближаются к фильтрам Баттерворта и Чебышева. Чтобы аппроксимировать фильтр Чебышевский Тип 1, сделайте затухание в полосе задерживания произвольно большим, например 180
дБ. Чтобы аппроксимировать фильтр Чебышёва типа II, сделайте неравномерность в полосе пропускания произвольно маленьким, для примера 1e-4
. Чтобы аппроксимировать фильтр Баттерворта, сделайте затухание в полосе задерживания произвольно большим, а полосу неравномерности в полосе пропускания произвольно маленьким.
Можно также проектировать фильтры, которые позволяют изменять частоту отключения во время исполнения. Блок Variable Bandwidth IIR Filter может использоваться для таких случаев. См. Настраиваемую Lowpass шумного входа в примере Simulink для модели, которая использует этот блок.