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

Используя цифровые блоки фильтра

DSP System Toolbox™ обеспечивает несколько блоков, реализующих цифровые фильтры, такие как Дискретный КИХ-Фильтр Фильтра и Biquad.

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

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

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

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

Примечание

Используйте блок Digital Filter Design для разработки и реализации фильтр. Используйте Дискретные КИХ-блоки Фильтра Фильтра и Biquad, чтобы реализовать предварительно разработанный фильтр. Оба метода реализуют фильтр таким же образом и имеют то же поведение во время симуляции и генерации кода.

Реализация Lowpass просачивается Simulink

Используйте блок Discrete FIR Filter, чтобы реализовать фильтр 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. Дважды кликните блок 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').

    • Введите в векторе содействующих значений фильтра.

  5. Переименуйте свой блок Digital Filter - Lowpass.

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

Реализация Highpass просачивается Simulink

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

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

      ex_filter_ex1

    в подсказке команды MATLAB.

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

  4. Дважды кликните блок 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').

    • Введите в векторе содействующих значений фильтра.

  5. Переименуйте свой блок Digital Filter - Highpass.

Вы теперь успешно реализовали фильтр highpass. В следующей теме, Фильтр Высокочастотный Шум в Simulink, вы используете эти Дискретные КИХ-блоки Фильтра, чтобы создать модель, способную к удалению высокочастотного шума от сигнала. Для получения дополнительной информации о разработке и реализации нового фильтра, смотрите Блок Создания цифровых фильтров.

Отфильтруйте высокочастотный шум в Simulink

В предыдущих темах вы использовали Дискретные КИХ-блоки Фильтра, чтобы реализовать фильтры highpass и lowpass. В этой теме вы используете эти блоки, чтобы создать модель, которая удаляет высокочастотный шум из сигнала. В этой модели вы используете фильтр 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

    Синусоида

    Источники

    1

    Осциллограф времени

    Приемники

    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

    Синусоида

    • Frequency (Hz) = 75

    • Sample time = 1/1000

    • Samples per frame = 50

    Осциллограф времени

    • File> Number of Input Ports> 3

    • File> Configuration ...

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

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

  6. Из меню Simulation выберите Model Configuration Parameters.

    Диалоговое окно 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

    • Синусоида = Original Sine Wave

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

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

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

  1. Установите параметр 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.

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

    • Для блока Discrete FIR Filter количество касаний фильтра, 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-by-6 матрица, где M является количеством разделов в фильтре раздела второго порядка. Каждая строка матрицы SOS содержит числитель и коэффициенты знаменателя (bik и aik) соответствующего раздела в фильтре.

  • Скаляр Scale values или вектор M +1 значение шкалы, которые будут использоваться между этапами SOS

    Если вы вводите скаляр, значение используется в качестве значения усиления перед первым разделом фильтра второго порядка. Остальная часть значений усиления установлена в 1.

    Если вы вводите вектор M +1 значение, каждое значение используется для отдельного участка фильтра. Например, первый элемент является первым значением усиления, второй элемент является вторым значением усиления и так далее.

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

[b01b11b21a01a11a21b02b12b22a02a12a22b0Mb1Mb2Ma0Ma1Ma2M]

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

Для просмотра документации необходимо авторизоваться на сайте