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

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

Создайте фильтр Баттерворта фиксированной точки

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

  • 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 коэффициенты Фильтра Баттерворта lowpass.

Создавать график Фильтра Lowpass:

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

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

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

Задайте функцию обратного вызова модели

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

  • Частотой дискретизации является Fs = 1 000 Гц.

  • Частотой среза является 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. В диалоговом окне Model Properties, на вкладке Callbacks, выбирают PreLoadFcn.

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

  4. Нажать ОК.

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

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

Чтобы завершить модель, добавьте блок Sine Wave (Simulink), блок Data Type Conversion (Simulink) и блок Scope (Simulink). Соедините и пометьте блоки согласно этой схеме.

Блок Sine Wave

Блок Sine Wave выводит сигнал с плавающей точкой. Блок имеет эти настройки:

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

  • Время: Use simulation time

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

  • Смещение: 0

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

  • Фаза: 0

  • Размер шага: 1/Fs

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

Блок Data Type Conversion

Блок Data Type Conversion преобразует сигнал с плавающей точкой от блока Sine Wave до сигнала фиксированной точки. Путем преобразования сигнала в фиксированную точку можно симулировать модель с помощью меньшей памяти. Блок имеет эти настройки:

  • Выходной минимум: []

  • Выходной максимум: []

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

  • Заблокируйте установку типа выходных данных против изменений Fixed-Point Tool: Off

  • Ввод и вывод, чтобы иметь равный: Real World Value (RWV)

  • Целочисленный режим округления: Floor

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

  • Размер шага: -1

Блок Scope

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

Установите параметры конфигурации модели

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

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

  • Ввод: Fixed-step

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

  • Размер фиксированного шага (основной шаг расчета): 1/Fs

Сконфигурировать модель:

  1. Во вкладке Modeling, при Setup, выбирают Model Settings.

  2. В панели Решателя, установленной дискретные параметры решателя.

  3. Нажать ОК.

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

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

Смотрите также

| (Signal Processing Toolbox) | (Simulink) | (Simulink) | (Simulink)

Похожие темы