DSP System Toolbox™ предоставляет несколько блоков, реализующих цифровые фильтры, такие как Discrete FIR Filter и Biquad Filter.
Используйте эти блоки, если вы уже выполнили проект и анализ и знаете свои желаемые коэффициенты фильтра. Можно использовать эти блоки для фильтрации одноканальных и многоканальных сигналов и для симуляции фильтров с плавающей и фиксированной точками. Затем можно использовать Simulink® Coder™ продукт, чтобы сгенерировать высоко оптимизированный код С из ваших фильтров.
Для реализации фильтра необходимо предоставить следующую базовую информацию о фильтре:
Желаемая структура фильтра
Коэффициенты фильтра
Примечание
Используйте блок Создание Цифровых Фильтров для разработки и реализации фильтра. Используйте блоки Дискретный конечная импульсная характеристика и Биквадный фильтр для реализации предварительно спроектированного фильтра. Оба метода реализуют фильтр одинаковым образом и имеют одинаковое поведение во время симуляции и генерации кода.
Используйте блок Discrete FIR Filter (Simulink), чтобы реализовать lowpass:
Задайте lowpass в 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 щелкните-и-перетащите блок Discrete FIR Filter в модель.
Дважды кликните блок «Дискретный конечная импульсная характеристика». Установите параметры блоков следующим образом и нажмите OK:
Coefficient source = Dialog parameters
Filter structure = Direct form transposed
Coefficients = lopassNum
Input processing = Columns as channels (frame based)
Initial states = 0
Обратите внимание, что вы можете предоставить коэффициенты фильтра несколькими способами:
Введите имя переменной из рабочего пространства MATLAB, например lopassNum
.
Вводите создание фильтра команды из Signal Processing Toolbox™ программного обеспечения или программного обеспечения DSP System Toolbox, такие как fir1(5, 0.2, 'low')
.
Введите вектор значений коэффициентов фильтра.
Переименуйте свой блок Цифровой Фильтр - Lowpass.
Блок Дискретный конечная импульсная характеристика в вашей модели теперь представляет lowpass. В следующей теме, Реализуйте фильтр Highpass в Simulink, вы используете блок Discrete FIR Filter, чтобы реализовать фильтр Highpass. Для получения дополнительной информации о блоке Discrete конечной импульсной характеристики Filter, смотрите Discrete FIR Filter блока страницы с описанием (Simulink). Для получения дополнительной информации о разработке и реализации нового фильтра смотрите Создание цифровых фильтров Блока.
В этой теме вы реализуете фильтр highpass с помощью блока Discrete FIR Filter (Simulink):
Если модель, созданная вами в Реализации Lowpass Filter в 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 Filtering, а затем из библиотеки Filter Implementations щелкните - и перетащите блок Discrete FIR Filter в модель.
Дважды кликните блок «Дискретный конечная импульсная характеристика». Установите параметры блоков следующим образом и нажмите OK:
Coefficient source = Dialog parameters
Filter structure = Direct form transposed
Coefficients = hipassNum
Input processing = Columns as channels (frame based)
Initial states = 0
Можно предоставить коэффициенты фильтра несколькими способами:
Введите имя переменной из рабочего пространства MATLAB, например hipassNum
.
Введите создание фильтра команды из программного обеспечения Signal Processing Toolbox или DSP System Toolbox, такие как fir1(5, 0.2, 'low')
.
Введите вектор значений коэффициентов фильтра.
Переименуйте свой блок Цифровой Фильтр - Highpass.
Теперь вы успешно реализовали фильтр highpass. В следующей теме, Filter High-Frequency Noise in Simulink, вы используете эти блоки Discrete конечной импульсной характеристики Filter, чтобы создать модель, способную удалять высокую частоту шум из сигнала. Для получения дополнительной информации о разработке и реализации нового фильтра смотрите Создание цифровых фильтров Блока.
В предыдущих темах вы использовали блоки Discrete FIR Filter (Simulink) для реализации lowpass и highpass фильтров. В этой теме вы используете эти блоки для создания модели, которая удаляет высокую частоту шум от сигнала. В этой модели вы используете фильтр highpass, который возбуждается с помощью равномерного случайного сигнала, чтобы создать высокочастотный шум. После того, как вы добавляете этот шум в синусоиду, вы используете lowpass фильтр, чтобы отфильтровать высокочастотный шум:
Если модель, созданная вами в Реализуйте Фильтр Highpass в Simulink, не открыта на рабочем столе, можно открыть эквивалентную модель, введя
ex_filter_ex2
в командной строке MATLAB.
Если вы еще не сделали этого, задайте коэффициенты lowpass и highpass фильтра в рабочем пространстве 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 Operations | 1 |
Случайный источник | Источники | 1 |
Sine wave | Источники | 1 |
Time Scope | Сливы | 1 |
Установите параметры для остальных блоков как указано в следующей таблице. Для любых параметров, не перечисленных в таблице, оставьте их при настройках по умолчанию.
Блок | Установка параметров |
---|---|
Добавить |
|
Случайный источник |
|
Sine wave |
|
Time Scope |
|
Соедините блоки как показано на следующем рисунке. Для выполнения этой задачи может потребоваться изменить размер некоторых блоков.
На вкладке Modeling нажмите Model Settings. Откроется диалоговое окно Configuration Parameters.
На панели Solver установите параметры следующим образом и нажмите OK:
Start time = 0
Stop time = 5
Type = Fixed-step
Solver = discrete (no continuous states)
На вкладке Simulation панели инструментов модели нажмите Run.
Симуляция модели начинается, и возможности отображает три входных сигналов.
После завершения симуляции выберите View > Legend из меню Time Scope. Легенда появится в окне Time Scope. Вы можете кликнуть-и-перетащить его в любое место на дисплее возможностей отображения. Чтобы изменить имена каналов, дважды кликните внутри легенды и замените текущие пронумерованные имена каналов следующими:
Добавить = Noisy Sine Wave
Цифровой фильтр - Lowpass = Filtered Noisy Sine Wave
Sine wave = Original Sine Wave
На следующем шаге вы будете устанавливать цвет, стиль и маркер каждого канала.
В окне Time Scope выберите View > Line Properties и установите следующее:
Линия | Стиль | Маркер | Цвет |
---|---|---|---|
Шумный Sine wave | - | None | Black |
Отфильтрованный шумный Sine wave | - | diamond | Red |
Исходный Sine wave | None | * | Blue |
Теперь отображение Time Scope должно выглядеть следующим образом:
Видно, что фильтр lowpass отфильтровывает высокочастотный шум в шумной синусоиде.
Теперь вы использовали блоки Discrete конечной импульсной характеристики Filter, чтобы создать модель, которая удаляет высокую частоту шум из сигнала. Для получения дополнительной информации о разработке и реализации нового фильтра смотрите Создание цифровых фильтров Блока.
Вы можете задать статический фильтр, используя Discrete FIR Filter (Simulink) или Biquad Filter блок. Для этого установите параметр Coefficient source равным Dialog parameters
.
Для дискретного конечная импульсная характеристика установите параметр Coefficients в вектор-строку коэффициентов числителя. Если вы задаете Filter structure Lattice MA
, параметр Coefficients представляет коэффициенты отражения.
Для фильтра Biquad установите SOS matrix (Mx6) матрицу M -by-6, где M количество разделов в фильтре секции второго порядка. Каждая строка матрицы SOS содержит коэффициенты числителя и знаменателя соответствующего раздела в фильтре. Установите Scale values в скаляр или вектор значений шкалы M + 1, используемых между каскадами SOS.
Чтобы изменить коэффициенты статического фильтра во время симуляции, дважды кликните блок, введите новые коэффициенты фильтра и нажмите OK. Вы не можете изменить порядок фильтра, поэтому вы не можете изменить количество элементов в матрице коэффициентов фильтра.
Изменяющиеся во времени фильтры являются фильтрами, коэффициенты которых изменяются со временем. Можно задать изменяющийся во времени фильтр, который изменяется один раз на систему координат. Можно фильтровать несколько каналов с каждым фильтром. Однако вы не можете применить различные фильтры к каждому каналу; все каналы используют один и тот же фильтр.
Чтобы задать изменяющийся во времени фильтр с использованием блока Biquad Filter или блока Discrete конечной импульсной характеристики:
Установите параметр Coefficient source равным Input port(s)
, который включает дополнительные входные порты блоков для изменяющихся во времени коэффициентов фильтра.
Блок дискретной конечной импульсной характеристики имеет Num
порт для коэффициентов числителя.
Блок Biquad Filter имеет Num
и Den
порты, а не один порт для матрицы SOS. Отдельные порты позволяют вам использовать различные длины дробей для коэффициентов числителя и знаменателя. Порт значений шкалы, g
, опционально. Можно отключить g
порт путем установки Scale values mode на Assume all are unity and optimize
.
Предоставьте матрицы коэффициентов фильтра портам с входом блоков.
Для блока Дискретный конечная импульсная характеристика количество отводов фильтра, N, не может изменяться с течением времени. Входные коэффициенты должны быть в векторе с 1 N байта .
Для блока Biquad Filter количество разделов фильтра, N, не может изменяться с течением времени. Коэффициенты числителя входа, Num
, должна быть матрицей 3- N. Входные коэффициенты знаменателя, Den
, должна быть матрицей 2- N. Значения шкалы входа, g
, должен быть вектором 1-бай- (N + 1).
Используйте блок Biquad Filter, чтобы задать статический биквадратичный БИХ (также известный как секция второго порядка или фильтр SOS). Установите следующие параметры:
Filter structure — Direct form I
, или Direct form I transposed
, или Direct form II
, или Direct form II transposed
SOS matrix (Mx6) M -by-6 SOS матрица
Матрица SOS является матрицей M-на-6, где M - количество каскадов в фильтре секций второго порядка. Каждая строка матрицы SOS содержит коэффициенты числителя и знаменателя (bik и aik) соответствующего раздела в фильтре.
Scale values Скаляр или вектор значений шкалы M + 1, чтобы использоваться между каскадами SOS
Если вы вводите скаляр, значение используется как значение усиления перед первой секцией фильтра второго порядка. Остальная часть значений усиления установлена равной 1.
Если вы вводите вектор M + 1 значений, каждое значение используется для отдельной секции фильтра. Для примера первый элемент является первым значением усиления, второй элемент является вторым значением усиления и так далее.
Вы можете использовать ss2sos
и tf2sos
функции от программного обеспечения Signal Processing Toolbox для преобразования описания вашего фильтра в пространстве состояний или передаточной функции в описание секции второго порядка, используемое этим блоком.
Блок нормирует каждую строку по a 1i, чтобы гарантировать значение 1 для коэффициентов знаменателя нулевой задержки.