DSP System Toolbox™ предоставляет несколько блоков, реализующих цифровые фильтры, такие как дискретный фильтр FIR и биквадный фильтр.
Используйте эти блоки, если вы уже выполнили проектирование и анализ и знаете желаемые коэффициенты фильтра. Эти блоки можно использовать для фильтрации одноканальных и многоканальных сигналов, а также для моделирования фильтров с плавающей и фиксированной точками. Затем можно использовать продукт Simulink ® Coder™ для создания высокооптимизированного кода C из фильтров.
Для реализации фильтра необходимо предоставить следующую основную информацию о фильтре:
Требуемая структура фильтра
Коэффициенты фильтра
Примечание
Используйте блок «Проектирование цифрового фильтра» для проектирования и реализации фильтра. Используйте блоки дискретного фильтра FIR и Biquad Filter для реализации заранее разработанного фильтра. Оба метода реализуют фильтр одинаковым образом и имеют одинаковое поведение во время моделирования и генерации кода.
Используйте блок дискретного фильтра FIR (Simulink) для реализации фильтра нижних частот:
Определение коэффициентов фильтра нижних частот в рабочей области MATLAB ® путем ввода
lopassNum = [-0.0021 -0.0108 -0.0274 -0.0409 -0.0266 0.0374 0.1435 0.2465 0.2896 0.2465 0.1435 0.0374 -0.0266 -0.0409 -0.0274 -0.0108 -0.0021];
Откройте Simulink и создайте новый файл модели.
В окне DSP System Toolbox Filtering > Filter Implementations library (Фильтрация системных инструментов DSP > Фильтрация реализаций) перетащите блок дискретного FIR-фильтра в модель.
Дважды щелкните на блоке «Дискретный КИХ-фильтр». Задайте параметры блока следующим образом и нажмите кнопку ОК:
Источник коэффициента = Dialog parameters
Структура фильтра = Direct form transposed
Коэффициенты = lopassNum
Обработка входных данных = Columns as channels (frame based)
Начальные состояния = 0
Следует отметить, что коэффициенты фильтра можно предоставить несколькими способами:
Введите имя переменной из рабочей области MATLAB, например lopassNum.
Введите команды проектирования фильтра из ПО Signal Processing Toolbox™ или DSP System Toolbox, например fir1(5, 0.2, 'low').
Введите вектор значений коэффициентов фильтра.
Переименуйте свой блок Цифровой фильтр - Нижний слой.
Блок дискретного фильтра FIR в модели теперь представляет фильтр нижних частот. В следующем разделе Реализация фильтра верхних частот в Simulink используется блок дискретного фильтра FIR для реализации фильтра верхних частот. Дополнительные сведения о блоке дискретного КИХ-фильтра см. на странице ссылки на блок дискретного КИХ-фильтра (Simulink). Дополнительные сведения о проектировании и внедрении нового фильтра см. в разделе Блок проектирования цифрового фильтра.
В этом разделе описывается реализация фильтра верхних частот с использованием блока Дискретный фильтр FIR (Simulink):
Если модель, созданная в разделе Реализация фильтра нижних частот в Simulink, не открыта на рабочем столе, можно открыть эквивалентную модель, введя
ex_filter_ex1
в командной строке MATLAB.
Определение коэффициентов фильтра верхних частот в рабочей области MATLAB путем ввода
hipassNum = [-0.0051 0.0181 -0.0069 -0.0283 -0.0061 ... 0.0549 0.0579 -0.0826 -0.2992 0.5946 -0.2992 -0.0826 ... 0.0579 0.0549 -0.0061 -0.0283 -0.0069 0.0181 -0.0051];
В библиотеке фильтрации панели инструментов DSP System Toolbox, а затем в библиотеке реализации фильтров перетащите блок дискретного фильтра FIR в модель.
Дважды щелкните на блоке «Дискретный КИХ-фильтр». Задайте параметры блока следующим образом и нажмите кнопку ОК:
Источник коэффициента = Dialog parameters
Структура фильтра = Direct form transposed
Коэффициенты = hipassNum
Обработка входных данных = Columns as channels (frame based)
Начальные состояния = 0
Коэффициенты фильтра можно предоставить несколькими способами:
Введите имя переменной из рабочей области MATLAB, например hipassNum.
Введите команды проектирования фильтра из ПО Signal Processing Toolbox или DSP System Toolbox, например fir1(5, 0.2, 'low').
Введите вектор значений коэффициентов фильтра.
Переименуйте свой блок Цифровой фильтр - Highpass.
Вы успешно внедрили фильтр верхних частот. В следующем разделе «Фильтрация высокочастотного шума в Simulink» эти дискретные блоки КИХ-фильтра используются для создания модели, способной удалять высокочастотный шум из сигнала. Дополнительные сведения о проектировании и внедрении нового фильтра см. в разделе Блок проектирования цифрового фильтра.
В предыдущих разделах для реализации фильтров нижних и верхних частот использовались блоки дискретного фильтра FIR (Simulink). В этом разделе эти блоки используются для построения модели, которая удаляет высокочастотный шум из сигнала. В этой модели для создания высокочастотного шума используется фильтр верхних частот, возбуждаемый равномерным случайным сигналом. После добавления этого шума к синусоиде используется фильтр нижних частот для фильтрации высокочастотного шума:
Если модель, созданная в разделе Реализация фильтра верхних частот в Simulink, не открыта на рабочем столе, можно открыть эквивалентную модель, введя
ex_filter_ex2
в командной строке MATLAB.
Если это еще не сделано, определите коэффициенты фильтра нижних и верхних частот в рабочей области MATLAB путем ввода
lopassNum = [-0.0021 -0.0108 -0.0274 -0.0409 -0.0266 ... 0.0374 0.1435 0.2465 0.2896 0.2465 0.1435 0.0374 ... -0.0266 -0.0409 -0.0274 -0.0108 -0.0021]; hipassNum = [-0.0051 0.0181 -0.0069 -0.0283 -0.0061 ... 0.0549 0.0579 -0.0826 -0.2992 0.5946 -0.2992 -0.0826 ... 0.0579 0.0549 -0.0061 -0.0283 -0.0069 0.0181 -0.0051];
Щелкните и перетащите следующие блоки в файл модели.
| Блок | Библиотека | Количество |
|---|---|---|
Добавить | Библиотека операций Simulink/Math | 1 |
Случайный источник | Источники | 1 |
Синусоидальная волна | Источники | 1 |
Объем времени | Сливы | 1 |
Задайте параметры для остальных блоков, как указано в следующей таблице. Для параметров, не перечисленных в таблице, оставьте их в настройках по умолчанию.
| Блок | Настройка параметров |
|---|---|
Добавить |
|
Случайный источник |
|
Синусоидальная волна |
|
Объем времени |
|
Подключите блоки, как показано на следующем рисунке. Для выполнения этой задачи может потребоваться изменить размер некоторых блоков.

На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings). Откроется диалоговое окно Параметры конфигурации (Configuration Parameters).
На панели Решатель (Solver) задайте параметры следующим образом и нажмите кнопку ОК.
Время начала = 0
Время остановки = 5
Тип = Fixed-step
Решатель = discrete (no continuous states)
На вкладке «Моделирование» панели инструментов модели нажмите «Выполнить».
Начинается моделирование модели, и в Области (Scope) отображаются три входных сигнала.
После завершения моделирования выберите «Вид» > «Легенда» в меню «Область времени». Легенда появится в окне Область времени (Time Scope). Можно щелкнуть и перетащить его в любом месте экрана области. Чтобы изменить имена каналов, дважды щелкните внутри легенды и замените текущие пронумерованные имена каналов следующим образом:
Добавить = Noisy Sine Wave
Цифровой фильтр - Lowpass = Filtered Noisy Sine Wave
Синусоидальная волна = Original Sine Wave
На следующем шаге задаются цвет, стиль и маркер каждого канала.
В окне «Область времени» выберите «Просмотр» > «Свойства строки» и задайте следующие параметры:
| Линия | Стиль | Маркер | Цвет |
|---|---|---|---|
| Шумная синусоидальная волна | - | Ничего | Черный |
| Отфильтрованная шумная синусоидальная волна | - | алмаз | Красный |
| Исходная синусоидальная волна | Ничего | * | Синий |
Теперь появится следующее окно «Time Scope»:
Видно, что фильтр нижних частот отфильтровывает высокочастотный шум в шумовой синусоиде.

Теперь для построения модели, которая удаляет высокочастотный шум из сигнала, используются блоки дискретного КИХ-фильтра. Дополнительные сведения о проектировании и внедрении нового фильтра см. в разделе Блок проектирования цифрового фильтра.
Статический фильтр можно задать с помощью блока «Дискретный КИХ-фильтр» (Simulink) или «Биквадский фильтр». Для этого задайте для параметра Coefficient source значение Dialog parameters.
Для дискретного КИХ-фильтра установите параметр Coefficients в вектор строки числительных коэффициентов. Если для параметра «Структура фильтра» задано значение Lattice MA, параметр Coefficients представляет коэффициенты отражения.
Для фильтра Biquad установите матрицу SOS (Mx6) в матрицу M-by-6, где M - количество секций в фильтре секции второго порядка. Каждая строка матрицы SOS содержит числительные и знаменательные коэффициенты соответствующего участка в фильтре. Установите значения Scale в скалярное или векторное значение шкалы M + 1, используемое между этапами SOS.
Чтобы изменить статические коэффициенты фильтра во время моделирования, дважды щелкните блок, введите новые коэффициенты фильтра и нажмите кнопку ОК. Изменить порядок фильтров невозможно, поэтому нельзя изменить количество элементов в матрице коэффициентов фильтра.
Изменяющиеся во времени фильтры - это фильтры, коэффициенты которых изменяются со временем. Можно указать изменяющийся во времени фильтр, который изменяется один раз за кадр. С помощью каждого фильтра можно фильтровать несколько каналов. Однако нельзя применять разные фильтры к каждому каналу; все каналы используют один и тот же фильтр.
Чтобы задать изменяющийся во времени фильтр с помощью блока Biquad Filter или дискретного фильтра FIR, выполните следующие действия.
Задайте для параметра Coefficient source значение Input port(s), что позволяет использовать дополнительные входные порты блока для изменяющихся во времени коэффициентов фильтра.
Блок дискретного КИХ-фильтра имеет Num порт для числительных коэффициентов.
Блок Biquad Filter имеет Num и Den вместо одного порта для матрицы SOS. Отдельные порты позволяют использовать различные длины дробей для числительных и знаменательных коэффициентов. Порт масштабных значений, g, является необязательным. Вы можете отключить g порт путем установки для режима масштабных значений значения Assume all are unity and optimize.
Предоставьте матрицы коэффициентов фильтра входным портам блока.
Для блока дискретного КИХ-фильтра количество отводов фильтра N не может изменяться во времени. Входные коэффициенты должны быть в 1-by-N векторе.
Для блока Biquad Filter количество секций фильтра N не может изменяться во времени. Входные числительные коэффициенты, Num, должно быть 3-by-N матрицей. Входные коэффициенты знаменателя, Den, должно быть 2-by-N матрицей. Входные значения шкалы, g, должен быть 1-by- (N + 1) вектором.
Блок Biquad Filter используется для задания статического биквадратического фильтра IIR (также известного как SOS-фильтр второго порядка). Установите следующие параметры:
Структура фильтра - Direct form I, или Direct form I transposed, или Direct form II, или Direct form II transposed
Матрица SOS (Mx6) M-by-6 матрица SOS
Матрица SOS является M-by-6 матрицей, где M - количество секций в фильтре секций второго порядка. Каждая строка матрицы SOS содержит числитель и коэффициенты знаменателя (бик и аик) соответствующего участка в фильтре.
Масштабные значения Скалярные или векторные из M + 1 масштабные значения, используемые между этапами SOS
При вводе скаляра значение используется в качестве значения коэффициента усиления перед первой секцией фильтра второго порядка. Остальные значения коэффициента усиления установлены в 1.
При вводе вектора значений M + 1 каждое значение используется для отдельного раздела фильтра. Например, первый элемент является первым значением усиления, второй элемент является вторым значением усиления и так далее.

Вы можете использовать ss2sos и tf2sos функции из ПО Signal Processing Toolbox для преобразования описания состояния-пространства или передаточной функции фильтра в описание раздела второго порядка, используемое этим блоком.
Блок нормализует каждую строку на a1i, чтобы гарантировать значение 1 для коэффициентов знаменателя нулевой задержки.