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

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

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

Используйте эти блоки, если вы уже выполнили проект и анализ и знаете ваши желаемые коэффициенты фильтра. Можно использовать эти блоки, чтобы отфильтровать одноканальные и многоканальные сигналы и симулировать фильтры и фиксированной точки с плавающей точкой. Затем можно использовать продукт 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

В предыдущих темах вы использовали блоки Discrete FIR Filter, чтобы реализовать фильтры 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

    Sine wave

    Источники

    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

    Sine wave

    • 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. Во вкладке 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 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 для коэффициентов знаменателя нулевой задержки.