exponenta event banner

Создание фильтра нижних частот с использованием данных с фиксированной точкой

В этом примере показано, как построить диаграмму Stateflow ®, использующую данные с фиксированной точкой для реализации фильтра Butterworth нижних частот. При проектировании фильтра с данными с фиксированной запятой вместо данных с плавающей запятой можно моделировать модель с использованием меньшего объема памяти. Дополнительные сведения см. в разделе Фиксированные данные в диаграммах потока состояний.

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

Диаграмма фильтра нижних частот представляет собой блок-схему без состояния, которая принимает один вход и обеспечивает один выход. Диаграмма содержит следующие символы данных:

  • x - Объем работ: Input, Тип: Inherit:Same as Simulink

  • y - Объем работ: Output, Тип: fixdt(1,16,10)

  • x_n1 - Объем работ: Local, Тип: fixdt(1,16,12)

  • y_n1 - Объем работ: Local, Тип: fixdt(1,16,10)

  • b0 - Объем работ: Parameter, Тип: fixdt(1,16,15)

  • b1 - Объем работ: Parameter, Тип: fixdt(1,16,15)

  • a1 - Объем работ: Parameter, Тип: fixdt(1,16,15)

Значения b0, b1, и a1 - коэффициенты фильтра Баттерворта нижних частот.

Чтобы построить диаграмму фильтра нижних частот, выполните следующие действия.

  1. Создание модели Simulink ® с пустой диаграммой Stateflow путем вводаsfnew в командной строке MATLAB ®.

  2. В диаграмме Stateflow добавьте блок-схему с одной ветвью, которая назначает значения y, x_n1, и y_n1.

  3. Добавьте входные, выходные, локальные данные и данные параметров в диаграмму, как описано в разделе Добавление данных потока состояний.

Определение функции обратного вызова модели

Перед загрузкой модели MATLAB вызывает butter(Панель инструментов обработки сигналов) для вычисления значений параметров b0, b1, и a1. Функция конструирует фильтр Баттерворта нижних частот первого порядка с нормированной частотой отсечения (2*pi*Fc/(Fs/2)) радианы в секунду, где:

  • Частота дискретизации равна Fs = 1000 Гц.

  • Частота отсечки равна Fc = 50 Гц.

Вывод функции B содержит числительные коэффициенты фильтра в степени убывания z. Вывод функции A содержит коэффициенты знаменателя фильтра в степенях убывания z.

Fs = 1000;
Fc = 50;
[B,A] = butter(1,2*pi*Fc/(Fs/2));
b0 = B(1);
b1 = B(2);
a1 = A(2);

Чтобы определить обратный вызов перед загрузкой для модели, выполните следующие действия.

  1. На вкладке Моделирование (Modeling) в разделе Настройка (Setup) выберите Параметры модели (Model Settings) > Свойства модели (Model Properties).

  2. В диалоговом окне «Свойства модели» на вкладке «Обратные вызовы» выберите PreLoadFcn.

  3. Введите код MATLAB для вызова функции предварительной загрузки.

  4. Нажмите кнопку ОК.

Чтобы загрузить значения параметров в рабочую область MATLAB, сохраните, закройте и снова откройте модель.

Добавление других блоков в модель

Чтобы завершить модель, добавьте блок синусоидальной волны (Simulink), блок преобразования типа данных (Simulink) и блок области (Simulink). Подключите и промаркируйте блоки в соответствии с этой схемой.

Блок синусоидальной волны

Блок синусоидальной волны выдает сигнал с плавающей запятой. Блок имеет следующие настройки:

  • Тип синуса: Time based

  • Время: Use simulation time

  • Амплитуда: 1

  • Смещение: 0

  • Частота: 2*pi*Fc

  • Этап: 0

  • Время выборки: 1/Fs

  • Интерпретировать векторные параметры как 1-D: On

Блок преобразования типов данных

Блок преобразования типа данных преобразует сигнал с плавающей запятой из блока синусоидальной волны в сигнал с фиксированной запятой. Преобразуя сигнал в тип с фиксированной точкой, можно моделировать модель с использованием меньшего объема памяти. Блок имеет следующие настройки:

  • Минимальный выходной сигнал: []

  • Максимальная выходная мощность: []

  • Тип выходных данных: fixdt(1,16,14)

  • Блокировка параметров типа выходных данных от изменений с помощью инструментов с фиксированной точкой: Off

  • Вход и выход должны быть равны: Real World Value (RWV)

  • Режим округления целых чисел: Floor

  • Насыщение при целочисленном переполнении: Off

  • Время выборки: -1

Блок области

Блок Scope имеет два входных порта, которые подключаются к входному и выходному сигналам для диаграммы фильтров нижних частот. Для раздельного отображения двух сигналов выберите формат области с двумя строками и одним столбцом.

Задать параметры конфигурации модели

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

  • Время остановки: 0.1

  • Тип: Fixed-step

  • Решатель: discrete (no continuous states)

  • Фиксированный размер шага (основное время выборки): 1/Fs

Чтобы настроить модель, выполните следующие действия.

  1. На вкладке Моделирование (Modeling) в разделе Настройка (Setup) выберите Параметры модели (Model Settings).

  2. На панели Решатель (Solver) задайте параметры дискретного решателя.

  3. Нажмите кнопку ОК.

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

При моделировании модели в блоке Область (Scope) отображаются два сигнала. Верхний сигнал показывает фиксированную версию синусоидального входа в диаграмму. Нижний сигнал соответствует отфильтрованному выходу из диаграммы. Фильтр удаляет высокочастотные значения из сигнала, но позволяет низкочастотным значениям проходить через диаграмму без изменений.

См. также

| (Панель инструментов обработки сигналов) | (Simulink) | ) | (Simulink)

Связанные темы