DSP System Toolbox™ обеспечивает несколько блоков, реализующих цифровые фильтры, такие как Discrete FIR Filter и Biquad Filter.
Используйте эти блоки, если вы уже выполнили проект и анализ и знаете ваши желаемые коэффициенты фильтра. Можно использовать эти блоки, чтобы отфильтровать одноканальные и многоканальные сигналы и симулировать фильтры и фиксированной точки с плавающей точкой. Затем можно использовать продукт Simulink® Coder™, чтобы сгенерировать высоко оптимизированный код С от фильтров.
Чтобы реализовать фильтр, необходимо предоставить следующую основную информацию о фильтре:
Желаемая структура фильтра
Коэффициенты фильтра
Используйте блок Digital Filter Design для разработки и реализации фильтр. Используйте Дискретные КИХ-блоки Фильтра Фильтра и Biquad, чтобы реализовать предварительно спроектированный фильтр. Оба метода реализуют фильтр таким же образом и имеют то же поведение в процессе моделирования и генерацию кода.
Используйте блок Discrete FIR Filter, чтобы реализовать фильтр 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 в свою модель.
Дважды кликните блок 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').
Введите в векторе содействующих значений фильтра.
Переименуйте свой блок Digital Filter - Lowpass.
Блок Discrete FIR Filter в вашей модели теперь представляет фильтр lowpass. В следующей теме Highpass Реализация, Просачиваются Simulink, вы используете блок Discrete FIR Filter, чтобы реализовать фильтр highpass. Для получения дополнительной информации о блоке Discrete FIR Filter, смотрите страницу с описанием блока Discrete FIR Filter. Для получения дополнительной информации о разработке и реализации нового фильтра, смотрите Блок Создания цифровых фильтров.
В этой теме вы реализуете фильтр highpass с помощью блока Discrete FIR Filter:
Если модель, вы создали в Реализации Lowpass, Просачивается, Simulink не открыт на вашем рабочем столе, можно открыть эквивалентную модель путем ввода
ex_filter_ex1
в командной строке MATLAB.
Задайте коэффициенты фильтра highpass в рабочем пространстве 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 в вашу модель.
Дважды кликните блок 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').
Введите в векторе содействующих значений фильтра.
Переименуйте свой блок Digital Filter - Highpass.
Вы теперь успешно реализовали фильтр highpass. В следующей теме, Фильтр Высокочастотный Шум в Simulink, вы используете эти Дискретные КИХ-блоки Фильтра, чтобы создать модель, способную к удалению высокочастотного шума от сигнала. Для получения дополнительной информации о разработке и реализации нового фильтра, смотрите Блок Создания цифровых фильтров.
В предыдущих темах вы использовали блоки Discrete FIR Filter, чтобы реализовать фильтры highpass и lowpass. В этой теме вы используете эти блоки, чтобы создать модель, которая удаляет высокочастотный шум из сигнала. В этой модели вы используете фильтр 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 |
Осциллограф времени | Приемники | 1 |
Установите параметры для остальной части блоков, как обозначено в следующей таблице. Для любых параметров, не перечисленных в таблице, оставьте их при их настройках по умолчанию.
| Блок | Установка параметра |
|---|---|
Добавление |
|
Случайный источник |
|
Sine wave |
|
Осциллограф времени |
|
Соедините блоки как показано в следующем рисунке. Вы, возможно, должны изменить размер некоторых своих блоков, чтобы выполнить эту задачу.

Во вкладке 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 FIR Filter или 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 FIR Filter:
Установите параметр Coefficient source на Input port(s), который включает дополнительные входные порты блока для изменяющихся во времени коэффициентов фильтра.
Блок Discrete FIR Filter имеет Num порт для коэффициентов числителя.
Блок Biquad Filter имеет Num и Den порты, а не один порт для матрицы SOS. Отдельные порты позволяют вам использовать различные дробные длины в коэффициентах знаменателя и числителе. Порт значений шкалы, g, является дополнительным. Можно отключить g порт установкой Scale values mode к Assume all are unity and optimize.
Предоставьте матрицы коэффициентов фильтра к входным портам блока.
Для блока Discrete FIR Filter количество касаний фильтра, 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-by-6 матрица, где M является количеством разделов в фильтре секции второго порядка. Каждая строка матрицы SOS содержит числитель и коэффициенты знаменателя (bik и aik) соответствующего раздела в фильтре.
Скаляр Scale values или вектор M +1 значение шкалы, которые будут использоваться между этапами SOS
Если вы вводите скаляр, значение используется в качестве значения усиления перед первым разделом фильтра второго порядка. Остальная часть значений усиления установлена в 1.
Если вы вводите вектор M +1 значение, каждое значение используется в отдельном участке фильтра. Например, первый элемент является первым значением усиления, второй элемент является вторым значением усиления и так далее.

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