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