Реализации цифровых фильтров

Использование блоков цифрового фильтра

DSP System Toolbox™ предоставляет несколько блоков, реализующих цифровые фильтры, такие как Discrete FIR Filter и Biquad Filter.

Используйте эти блоки, если вы уже выполнили проект и анализ и знаете свои желаемые коэффициенты фильтра. Можно использовать эти блоки для фильтрации одноканальных и многоканальных сигналов и для симуляции фильтров с плавающей и фиксированной точками. Затем можно использовать Simulink® Coder™ продукт, чтобы сгенерировать высоко оптимизированный код С из ваших фильтров.

Для реализации фильтра необходимо предоставить следующую базовую информацию о фильтре:

  • Желаемая структура фильтра

  • Коэффициенты фильтра

Примечание

Используйте блок Создание Цифровых Фильтров для разработки и реализации фильтра. Используйте блоки Дискретный конечная импульсная характеристика и Биквадный фильтр для реализации предварительно спроектированного фильтра. Оба метода реализуют фильтр одинаковым образом и имеют одинаковое поведение во время симуляции и генерации кода.

Реализуйте Lowpass Фильтр в Simulink

Используйте блок Discrete FIR Filter (Simulink), чтобы реализовать lowpass:

  1. Задайте 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];

  2. Откройте Simulink и создайте новый файл модели.

  3. Из библиотеки DSP System Toolbox Filtering > Filter Implementations щелкните-и-перетащите блок Discrete FIR Filter в модель.

  4. Дважды кликните блок «Дискретный конечная импульсная характеристика». Установите параметры блоков следующим образом и нажмите 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').

    • Введите вектор значений коэффициентов фильтра.

  5. Переименуйте свой блок Цифровой Фильтр - Lowpass.

Блок Дискретный конечная импульсная характеристика в вашей модели теперь представляет lowpass. В следующей теме, Реализуйте фильтр Highpass в Simulink, вы используете блок Discrete FIR Filter, чтобы реализовать фильтр Highpass. Для получения дополнительной информации о блоке Discrete конечной импульсной характеристики Filter, смотрите Discrete FIR Filter блока страницы с описанием (Simulink). Для получения дополнительной информации о разработке и реализации нового фильтра смотрите Создание цифровых фильтров Блока.

Реализуйте фильтр Highpass в Simulink

В этой теме вы реализуете фильтр highpass с помощью блока Discrete FIR Filter (Simulink):

  1. Если модель, созданная вами в Реализации Lowpass Filter в Simulink, не открыта на рабочем столе, можно открыть эквивалентную модель, введя

      ex_filter_ex1

    в командной строке MATLAB.

  2. Определите коэффициенты фильтра верхних частот в рабочем пространстве 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];
  3. Из библиотеки DSP System Toolbox Filtering, а затем из библиотеки Filter Implementations щелкните - и перетащите блок Discrete FIR Filter в модель.

  4. Дважды кликните блок «Дискретный конечная импульсная характеристика». Установите параметры блоков следующим образом и нажмите 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').

    • Введите вектор значений коэффициентов фильтра.

  5. Переименуйте свой блок Цифровой Фильтр - Highpass.

Теперь вы успешно реализовали фильтр highpass. В следующей теме, Filter High-Frequency Noise in Simulink, вы используете эти блоки Discrete конечной импульсной характеристики Filter, чтобы создать модель, способную удалять высокую частоту шум из сигнала. Для получения дополнительной информации о разработке и реализации нового фильтра смотрите Создание цифровых фильтров Блока.

Фильтрация высокочастотного шума в Simulink

В предыдущих темах вы использовали блоки Discrete FIR Filter (Simulink) для реализации lowpass и highpass фильтров. В этой теме вы используете эти блоки для создания модели, которая удаляет высокую частоту шум от сигнала. В этой модели вы используете фильтр highpass, который возбуждается с помощью равномерного случайного сигнала, чтобы создать высокочастотный шум. После того, как вы добавляете этот шум в синусоиду, вы используете lowpass фильтр, чтобы отфильтровать высокочастотный шум:

  1. Если модель, созданная вами в Реализуйте Фильтр Highpass в Simulink, не открыта на рабочем столе, можно открыть эквивалентную модель, введя

    ex_filter_ex2 

    в командной строке MATLAB.

  2. Если вы еще не сделали этого, задайте коэффициенты 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];
  3. Щелкните-и-перетащите следующие блоки в файл модели.

    БлокБиблиотекаКоличество

    Добавить

    Библиотека Simulink/Math Operations

    1

    Случайный источник

    Источники

    1

    Sine wave

    Источники

    1

    Time Scope

    Сливы

    1

  4. Установите параметры для остальных блоков как указано в следующей таблице. Для любых параметров, не перечисленных в таблице, оставьте их при настройках по умолчанию.

    БлокУстановка параметров

    Добавить

    • Icon shape  = rectangular

    • List of signs = ++

    Случайный источник

    • Source type = Uniform

    • Minimum = 0

    • Maximum = 4

    • Sample mode = Discrete

    • Sample time = 1/1000

    • Samples per frame = 50

    Sine wave

    • Frequency (Hz) = 75

    • Sample time = 1/1000

    • Samples per frame = 50

    Time Scope

    • File> Number of Input Ports> 3

    • File> Configuration ...

      • Откройте диалоговое окно Visuals:Time Domain Options и установите Time span = One frame period

  5. Соедините блоки как показано на следующем рисунке. Для выполнения этой задачи может потребоваться изменить размер некоторых блоков.

  6. На вкладке Modeling нажмите Model Settings. Откроется диалоговое окно Configuration Parameters.

  7. На панели Solver установите параметры следующим образом и нажмите OK:

    • Start time = 0

    • Stop time = 5

    • Type = Fixed-step

    • Solver = discrete (no continuous states)

  8. На вкладке Simulation панели инструментов модели нажмите Run.

    Симуляция модели начинается, и возможности отображает три входных сигналов.

  9. После завершения симуляции выберите View > Legend из меню Time Scope. Легенда появится в окне Time Scope. Вы можете кликнуть-и-перетащить его в любое место на дисплее возможностей отображения. Чтобы изменить имена каналов, дважды кликните внутри легенды и замените текущие пронумерованные имена каналов следующими:

    • Добавить = Noisy Sine Wave

    • Цифровой фильтр - Lowpass = Filtered Noisy Sine Wave

    • Sine wave = Original Sine Wave

    На следующем шаге вы будете устанавливать цвет, стиль и маркер каждого канала.

  10. В окне Time Scope выберите View > Line Properties и установите следующее:

    ЛинияСтильМаркерЦвет
    Шумный Sine wave - NoneBlack
    Отфильтрованный шумный Sine wave - diamondRed
    Исходный Sine wave None *Blue
  11. Теперь отображение 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 конечной импульсной характеристики:

  1. Установите параметр Coefficient source равным Input port(s), который включает дополнительные входные порты блоков для изменяющихся во времени коэффициентов фильтра.

    • Блок дискретной конечной импульсной характеристики имеет Num порт для коэффициентов числителя.

    • Блок Biquad Filter имеет Num и Den порты, а не один порт для матрицы SOS. Отдельные порты позволяют вам использовать различные длины дробей для коэффициентов числителя и знаменателя. Порт значений шкалы, g, опционально. Можно отключить g порт путем установки Scale values mode на Assume all are unity and optimize.

  2. Предоставьте матрицы коэффициентов фильтра портам с входом блоков.

    • Для блока Дискретный конечная импульсная характеристика количество отводов фильтра, N, не может изменяться с течением времени. Входные коэффициенты должны быть в векторе с 1 N байта .

    • Для блока Biquad Filter количество разделов фильтра, N, не может изменяться с течением времени. Коэффициенты числителя входа, Num, должна быть матрицей 3- N. Входные коэффициенты знаменателя, Den, должна быть матрицей 2- N. Значения шкалы входа, g, должен быть вектором 1-бай- (N + 1).

Задайте матрицу SOS (биквадратичные коэффициенты фильтра)

Используйте блок Biquad Filter, чтобы задать статический биквадратичный БИХ (также известный как секция второго порядка или фильтр SOS). Установите следующие параметры:

  • Filter structureDirect 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 для преобразования описания вашего фильтра в пространстве состояний или передаточной функции в описание секции второго порядка, используемое этим блоком.

[b01b11b21a01a11a21b02b12b22a02a12a22b0Mb1Mb2Ma0Ma1Ma2M]

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