Мастер реализации фильтра

Обзор мастера реализации фильтра

Мастер реализации фильтра является другим блоком DSP System Toolbox™, который может использоваться для разработки и реализации цифровых фильтров. Можно использовать этот инструмент для фильтрации одноканальных сигналов с плавающей точкой или с фиксированной точкой. Как и блок Создание Цифровых Фильтров, двойной щелчок по блоку мастера реализации фильтра открывает конструктор фильтров. В отличие от блока Создание Цифровых Фильтров, мастер реализации фильтра запускает конструктор фильтров с выбранной Realize Model панелью. Эта панель оптимизирована для использования с программным обеспечением DSP System Toolbox.

Для получения дополнительной информации см. Filter Realization Wizard страницы с описанием блоков. Для получения информации о выборе между блоком Создание Цифровых Фильтров и мастером реализации фильтра см. раздел «Выбор блока создания фильтра».

Проектируйте и реализуйте фильтр с фиксированной точкой в Simulink

В этом разделе приведены руководства по созданию фильтра с фиксированной точкой с помощью Мастера реализации фильтра. Вы будете использовать Мастер реализации фильтра, чтобы удалить шум от сигнала. Это руководство имеет следующие части:

Часть 1 - Создайте сигнал с добавленным шумом

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

  1. Напечатать

    load mtlb
    soundsc(mtlb,Fs)

    в MATLAB® командная строка. Вы должны услышать голос «MATLAB». Это сигнал, которому вы добавите шум.

  2. Создайте сигнал шума путем набора

    noise = cos(2*pi*3*Fs/8*(0:length(mtlb)-1)/Fs)';

    в командной строке. Вы можете услышать сигнал шума, вводя

    soundsc(noise,Fs)
  3. Добавьте шум к исходному сигналу путем ввода

    u = mtlb + noise;

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

  4. Масштабируйте сигнал с шумом путем набора

    u = u/max(abs(u));

    в командной строке. Вы масштабируете сигнал, чтобы попытаться избежать переполнения позже. Вы можете слышать масштабированный сигнал с шумом, вводя

    soundsc(u,Fs)
  5. Смотрите масштабированный сигнал с шумом при вводе

    spectrogram(u,256,[],[],Fs);colorbar

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

Спектрограмма появляется следующим образом.

В спектрограмме можно увидеть сигнал шума как линию примерно на 2800 Гц, что равно 3*Fs/8.

Часть 2 - Создайте фильтр с фиксированной точкой с помощью мастера реализации фильтра

Далее будет создан фильтр с фиксированной точкой с помощью Мастера реализации фильтра. Вы создадите фильтр, который уменьшает эффекты шума на сигнал.

  1. Откройте новый Simulink® и перетащите блок Filter Realization Wizard из библиотеки Filtering/Filter Implementations в модель.

    Примечание

    Вам не нужно помещать блок мастера реализации фильтра в модель, порядок использовать его. Вы можете открыть приложение из библиотеки. Однако в целях этого руководства мы сохраним блок Filter Realization Wizard в модели.

  2. Дважды кликните блок Filter Realization Wizard в вашей модели. Появится Realize Model панель конструктора фильтров.

  3. Нажмите кнопку Design Filter () в нижней левой части окна filter designer. Это выводит вперед Design filter панель инструмента.

  4. Установите следующие поля на панели Design filter:

    • Установите Design Method значение IIR -- Constrained Least Pth-norm

    • Установите Fs значение Fs

    • Установите Fpass значение 0.2*Fs

    • Установите Fstop значение 0.25*Fs

    • Установите Max pole radius значение 0.8

    • Нажмите кнопку Design Filter

    Теперь панель Design filter должна появиться следующим образом.

  5. Нажмите кнопку Set quantization parameters внизу слева от конструктора фильтров (). Это выводит вперед Set quantization parameters панель инструмента.

  6. Установите следующие поля на панели Set quantization parameters:

    • Выберите Fixed-point для параметра Filter arithmetic.

    • Убедитесь, что на панели Best precision fraction lengths установлен флажок Coefficients.

    Панель Set quantization parameters должна появиться следующим образом.

  7. Нажмите кнопку «Реализовать модель» в левой части окна конструктора фильтров (). Это выводит вперед Realize Model панель инструмента.

  8. Установите флажок Build model using basic elements, а затем нажмите кнопку Realize Model в нижней части filter designer. Блок подсистемы для нового фильтра появляется в вашей модели.

    Примечание

    Вы не должны хранить блок Мастера реализации фильтра в той же модели, что и сгенерированный блок Filter. Однако для этого руководства мы сохраним блоки в одной модели.

  9. Дважды кликните Filter блок подсистемы в вашей модели, чтобы просмотреть реализацию фильтра.

Часть 3 - создайте модель для фильтрации сигнала

В этом разделе руководства вы будете фильтровать шум от сигнала в вашей модели Simulink.

  1. Подключите Signal From Workspace блок из библиотеки Sources к входу порту блока фильтра.

  2. Подключите To Workspace блок (Simulink) из библиотеки Sinks к выходу порту вашего блока фильтра. Теперь ваши блоки должны быть подключены следующим образом.

  3. Откройте Рабочую область Signal From диалогового окна блока и установите параметр Signal равным u. Нажмите кнопку OK, чтобы сохранить изменения и закрыть диалоговое окно.

  4. На вкладке Modeling выберите Model Settings. На Solver панели диалогового окна установите следующие поля:

    • Stop time = length(u)-1

    • Type = Fixed-step

    Нажмите кнопку OK, чтобы сохранить изменения и закрыть диалоговое окно.

  5. Запустите модель.

  6. На вкладке Debug выберите Information Overlays > Port Data Type. Теперь можно увидеть, что вход в блок Filter является сигналом типа double и выход блока Filter имеет тип данных sfix16_En11.

Часть 4 - Исследуйте результаты фильтрации

Теперь можно прослушать и посмотреть результаты разработанного и реализованного вами фильтра с фиксированной точкой.

  1. Напечатать

    soundsc(yout,Fs)

    в командной строке, чтобы услышать выход фильтра. Вы должны услышать голос «MATLAB». Шумовой фрагмент сигнала должна быть близка к неслучайной.

  2. Напечатать

    figure
    spectrogram(yout,256,[],[],Fs);colorbar

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

Из шкал палитры со стороны входной и выходной спектрограмм видно, что шум уменьшен примерно на 40 дБ.

Установите структуру фильтра и количество секций фильтра

Область Current Filter Information конструктора фильтров показывает структуру и количество секций второго порядка в вашем фильтре.

Измените структуру фильтра и количество фильтрующих секций вашего фильтра следующим образом:

  • Выберите Convert Structure из меню Edit, чтобы открыть диалоговое окно Convert Structure. Для получения дополнительной информации см. раздел «Преобразование в новую структуру» в документации по Signal Processing Toolbox™.

  • Выберите Convert to Second-Order Sections из меню Edit, чтобы открыть диалоговое окно Convert to SOS. Для получения дополнительной информации смотрите «Преобразование в секции второго порядка» в документации по Signal Processing Toolbox.

Оптимизируйте структуру фильтра

Мастер реализации фильтра может реализовать цифровой фильтр с помощью либо блоков цифровых фильтров из библиотеки DSP System Toolbox, либо путем создания подсистемы (Simulink), которая реализует фильтр с помощью блоков Sum (Simulink), Gain (Simulink) и Delay. Следующая процедура показывает, как оптимизировать реализацию фильтра:

  1. Откройте панель Realize Model конструктора фильтров, нажав кнопку «Реализовать модель» в левом нижнем углу конструктора фильтров.

  2. Выберите требуемые оптимизации в области Optimization на панели Realize Model. См. следующие описания и рисунки каждой опции оптимизации.

  • Optimize for zero gains - Удалите пути с нулевым усилением.

  • Optimize for unity gains - Подстановка усилений, равная единице, проводом (короткое замыкание).

  • Optimize for negative gains - Подстановочные усиления равны -1 с помощью провода (короткое замыкание) и измените соответствующие суммы на вычитания.

  • Optimize delay chains - замените любую цепь задержки, состоящую из n единичных задержек, одной задержкой по n.

  • Optimize for unity scale values - Удалите все шкалы значения умножения на 1 из структуры фильтра.

Следующая схема иллюстрирует результаты каждой из этих оптимизаций.