Интерактивный дизайн фильтра
filterBuilder(h)
filterBuilder('response')
filterBuilder запускает интерактивный инструмент для построения фильтров. Он опирается на fdesign объектно-ориентированная конструкция фильтра и предназначена для сокращения времени разработки в процессе разработки фильтра. filterBuilder использует подход, ориентированный на спецификацию, чтобы найти наилучший алгоритм для требуемого отклика.
Примечание
Для использования необходимо установить Toolbox™ обработки сигналов fdesign и filterBuilder. Некоторые функции, описанные ниже, могут быть недоступны, если установка не включает дополнительно системный Toolbox™ DSP. Можно проверить наличие обеих панелей инструментов, введя ver в командной строке.
Дополнительные сведения об использовании filterBuilder, см. раздел Процесс проектирования построителя фильтров.
Использовать filterBuilder, введите filterBuilder в командной строке MATLAB ® с использованием одного из трех подходов:
Просто введите filterBuilder. MATLAB открывает диалоговое окно для выбора типа ответа фильтра. После выбора типа ответа фильтра filterBuilder открывает соответствующее диалоговое окно проектирования фильтра.
Войти filterBuilder(h), где h - существующий объект фильтра. Например, если h - полосовой фильтр, filterBuilder(h) открывает диалоговое окно проектирования полосового фильтра. h объект должен быть создан с помощью filterBuilder или использование fdesign.
Примечание
Для создания и импорта объектов фильтра System необходимо иметь программное обеспечение DSP System Toolbox.
Войти filterBuilder(' заменять response')response с методом ответа из следующей таблицы. MATLAB открывает диалоговое окно проектирования фильтра, соответствующее заданному отклику.
Примечание
Для реализации ряда конструкций фильтров, перечисленных в следующей таблице, необходимо иметь программное обеспечение DSP System Toolbox. Если имеется только программное обеспечение Signal Processing Toolbox, можно разработать ограниченный набор следующих типов фильтров-ответов.
| Метод ответа | Описание конструкции результирующего фильтра | Объект фильтра |
|---|---|---|
| arbgrpdelay | Конструкция фильтра произвольной групповой задержки | fdesign.arbgrpdelay(Панель системных инструментов DSP) |
| arbmag | Конструкция фильтра произвольной величины | fdesign.arbmag(Панель системных инструментов DSP)
|
| arbmagnphase | Фильтр произвольного отклика (величина и фаза) | fdesign.arbmagnphase(Панель системных инструментов DSP)
|
| audioweighting | Фильтр взвешивания звука | fdesign.audioweighting(Панель системных инструментов DSP) |
bandpass или bp | Полосовой фильтр | fdesign.bandpass(Панель системных инструментов DSP) |
bandstop или bs | Полосовой фильтр | fdesign.bandstop(Панель системных инструментов DSP) |
| cic | Фильтр CIC | fdesign.decimator(M,'cic',...) или fdesign.interpolator(L,'cic',...)Посмотрите fdesign.decimator(Панель системных инструментов DSP) и fdesign.interpolator(Панель системных инструментов DSP) |
| ciccomp | Компенсатор CIC | fdesign.ciccomp(Панель системных инструментов DSP) |
| расческа | Гребенчатый фильтр | fdesign.comb(Панель системных инструментов DSP) |
| разность | Фильтр дифференциатора | fdesign.differentiator(Панель системных инструментов DSP) |
| fracdelay | Фильтр дробной задержки | fdesign.fracdelay(Панель системных инструментов DSP) |
полупенда или hb | Полуполосный фильтр | fdesign.halfband(Панель системных инструментов DSP) |
highpass или hp | Фильтр верхних частот | fdesign.highpass(Панель системных инструментов DSP) |
| hilb | Фильтр Гильберта | fdesign.hilbert(Панель системных инструментов DSP) |
| isinc, isinclp, или isinchp | Обратный sinc-фильтр нижних или верхних частот | fdesign.isinclp(Панель системных инструментов DSP) и fdesign.isinchp(Панель системных инструментов DSP) |
lowpass или lp | Фильтр нижних частот (по умолчанию) | fdesign.lowpass(Панель системных инструментов DSP) |
| метка | Фильтр надрезов | fdesign.notch(Панель системных инструментов DSP) |
| nyquist | Фильтр Найквиста | fdesign.nyquist(Панель системных инструментов DSP) |
| октава | Октавный фильтр | fdesign.octave(Панель системных инструментов DSP) |
| parameq | Фильтр параметрического эквалайзера | fdesign.parameq(Панель системных инструментов DSP) |
| пик | Пиковый фильтр | fdesign.peak(Панель системных инструментов DSP) |
Примечание
Поскольку они не изменяют структуру фильтра, параметры величины и метод проектирования можно настроить при использовании filterBuilder.
Основная панель построителя фильтров зависит от типа ответа фильтра, но базовая структура совпадает. На следующем рисунке показана основная компоновка диалогового окна.

При выборе ответа для фильтра доступные опции и параметры конструкции, отображаемые в диалоговом окне, изменяются. Этот экран позволяет сосредоточиться только на параметрах, которые имеют смысл в контексте конструкции фильтра.
Каждое диалоговое окно проектирования фильтра содержит опции, отображаемые в верхней части диалогового окна, показанного на следующем рисунке.
![]()
Сохранить переменную как - если нажать кнопку Применить, чтобы применить изменения, или кнопку ОК, чтобы закрыть это диалоговое окно, filterBuilder сохраняет текущий фильтр в рабочей области MATLAB как объект фильтра с введенным именем.
Показать отклик фильтра (View Filter Response) - отображает отклик величины для текущих спецификаций фильтра и метода проектирования, открывая инструмент визуализации фильтра (FVTool).
Примечание
filterBuilder содержит опцию «Применить». При каждом нажатии кнопки «Применить» filterBuilder записывает измененный фильтр в рабочую область MATLAB. Этот измененный фильтр имеет имя переменной, назначенное в поле Сохранить переменную как. Чтобы применить изменения без перезаписи переменной в рабочей области, измените имя переменной в поле Сохранить переменную (Save variable), как после нажатия кнопки Применить (Apply).
В диалоговом окне «Построитель фильтров» имеются три вкладки, содержащие три области: «Главная», «Типы данных» и «Создание кода». Первая панель изменяется в соответствии с проектируемым фильтром. Последние две панели одинаковы для всех фильтров. Эти панели рассматриваются в следующих разделах.
Вторая вкладка диалогового окна «Построитель фильтров» показана на следующем рисунке.

Раскрывающийся список Арифметика (Arithmetic) позволяет выбрать Double precision, Single precision, или Fixed point. Некоторые из этих опций могут быть недоступны в зависимости от параметров фильтра. Эти параметры описаны в следующей таблице.
| Запись арифметического списка | Влияние на фильтр |
|---|---|
Double precision | Все операции фильтрации и коэффициенты используют представления с двойной точностью, плавающей запятой и математику. filterBuilder для создания фильтра, double precision является значением по умолчанию для свойства Арифметика. |
Single precision | Все операции фильтрации и коэффициенты используют представления с плавающей запятой и математические представления с одной точностью. |
Fixed point | Эта запись применяет выбранные значения по умолчанию, обычно используемые на многих цифровых процессорах, к свойствам фильтра с фиксированной точкой. Эти свойства включают в себя длины слов коэффициентов, длины дробей и различные режимы работы. Этот параметр позволяет использовать только фиксированные типы данных с подписью. Конструкция фильтра с фиксированной точкой с filterBuilder доступна только при установке ПО Fixed-Point Designer™ вместе с ПО DSP System Toolbox. |
На следующем рисунке показана панель «Типы данных» после выбора Fixed point для параметра «Арифметика» и задайте для параметра «Внутренние элементы фильтра» значение Specify precision. На этом рисунке показана панель Типы данных для случая, когда флажок Использовать системный объект для реализации фильтра не установлен на главной панели.

При установке флажка Использовать системный объект для реализации фильтра (Use a System object to implementation filter) на главной панели появляется панель Типы данных (Data Types), как показано ниже.

Не все параметры, описанные в следующем разделе, применяются ко всем фильтрам. Например, фильтры FIR не имеют параметров Section input и Section output.
Укажите формат фильтра для данных, подлежащих фильтрации. Для всех случаев: filterBuilder реализует фильтры, использующие двоичное масштабирование точек и ввод со знаком. При необходимости можно задать длину слова и длину дроби.
Выберите способ задания длины слова и длины дроби числителя фильтра и коэффициентов знаменателя:
Specify word length позволяет ввести длину слова коэффициентов в битах. В этом режиме filterBuilder автоматически устанавливает длину дроби коэффициентов в двоично-точечное масштабирование, которое обеспечивает наилучшую возможную точность для значения и длины слова коэффициентов.
Binary point scaling позволяет ввести длину слова и длину дроби коэффициентов в битах. Если применимо, введите длины отдельных дробей для коэффициентов числителя и знаменателя.
Коэффициенты фильтра не соответствуют параметрам режима округления и режима переполнения, которые доступны при выборе Specify precision из списка Фильтровать внутренние элементы (Filter internals). Коэффициенты всегда насыщены и округлены до Nearest.
Выберите способ указания длины слова и длины дроби типа данных с фиксированной точкой в каждом разделе фильтра SOS. Этот параметр отображается только в том случае, если выбранной структурой фильтра являются IIR и SOS.
Binary point scaling позволяет вводить значения длины слов и дробей в битах.
Specify word length позволяет вводить длины слов в битах.
Выберите способ указания длины слова и длины дроби типа данных с фиксированной точкой, выходящей из каждого раздела фильтра SOS. Этот параметр отображается только в том случае, если выбранной структурой фильтра являются IIR и SOS.
Binary point scaling позволяет вводить длины слов и дробей выходных данных секции в битах.
Specify word length позволяет ввести длину выходного слова в битах.
Содержит состояния фильтра до, во время и после операций фильтра. Состояния действуют как память фильтра между запусками или сеансами фильтрации. Используйте этот параметр, чтобы указать, как обозначать длину слова состояния и дроби. Этот параметр не отображается для структур фильтрации прямой и прямой форм, поскольку filterBuilder выводит состояние непосредственно из входного формата. Государства всегда используют подписанное представление:
Binary point scaling позволяет ввести длину слова и длину дроби накопителя в битах.
Specify precision позволяет ввести длину слова и длину дроби в битах (если доступно).
Определяет, как фильтр обрабатывает выходные данные операций изделия. Выберите один из следующих вариантов:
Full precision - Сохранять полную точность результата.
Keep LSB - Сохранить наименьший бит в результате, когда вам нужно сократить слова данных.
Specify Precision - позволяет установить точность (длину дроби), используемую при выводе умножений.
Укажите, как фильтр с фиксированной точкой выполняет арифметические операции в фильтре. Затронутые части фильтра представляют собой продукты фильтрации, суммы, состояния и выходные данные. Выберите одну из следующих опций:
Full precision - указывает, что фильтр поддерживает полную точность во всех расчетах для продуктов, выходных данных и в накопителе.
Specify precision - Задайте значения длины слов и дробей, применяемые к результатам операций с изделием, выходному сигналу фильтра и накопителю. При выборе этого параметра включаются элементы управления длиной слова и дроби.
При выборе этой опции фильтр будет использовать подписанные представления для коэффициентов фильтра.
Задает длину слова для соответствующего параметра фильтра в битах.
Задает длину дроби для параметра ассоциативного фильтра в битах.
Используйте этот параметр, чтобы указать, как следует обозначать слова-накопители и длины дробей.
Определяет способ вывода накопителем сохраненных значений. Выберите один из следующих вариантов:
Full precision - Поддерживать полную точность в аккумуляторе.
Keep MSB - Сохранить в накопителе старший разряд.
Keep LSB - Храните младший бит в накопителе, когда нужно укоротить слова данных.
Specify Precision - позволяет установить точность (длину дроби), используемую накопителем.
Задает режим, используемый фильтром для масштабирования выходных данных после фильтрации. Имеются следующие варианты:
Avoid Overflow - Установите длину фракции выходных данных, чтобы избежать переполнения данных. Avoid overflow считается консервативной настройкой, поскольку она не зависит от значений входных данных и диапазона.
Best Precision - Установка длины доли выходных данных для максимизации точности выходных данных.
Specify Precision - установка длины дроби, используемой отфильтрованными данными.
Параметры в этой группе управляют тем, как фильтр округляет значения с фиксированной точкой и как он обрабатывает значения, которые переполняются.
Задает режим, используемый фильтром для квантования числовых значений, когда значения находятся между представимыми значениями для формата данных (длины слов и дробей).
ceil - Округлый к положительной бесконечности.
convergent - Округлить до ближайшего представимого целого числа. Привязывает к ближайшему даже сохраненному целому числу. Это наименее смещенный из методов, доступных в этом программном обеспечении.
zero/fix - Округлый к нулю.
floor - Округлый к отрицательной бесконечности.
nearest - Округлый в сторону ближайшего. Связи вокруг к положительной бесконечности.
round - Округлый в сторону ближайшего. Связи вокруг к отрицательной бесконечности для отрицательных чисел и к положительной бесконечности для положительных чисел.
Выбор, который вы делаете, влияет на все, кроме значений коэффициентов и входных данных, которые всегда округляются. В большинстве случаев продукты не переполняются - они сохраняют полную точность.
Задает режим, используемый фильтром для реагирования на условия переполнения в арифметике с фиксированной точкой. Выберите один из следующих вариантов:
Saturate - Ограничить выход наибольшим положительным или отрицательным представимым значением.
Wrap - Установите значения переполнения до ближайшего представимого значения с помощью модульной арифметики.
Выбор, который вы делаете, влияет на все, кроме значений коэффициентов и входных данных, которые всегда округляются. В большинстве случаев продукты не переполняются - они сохраняют полную точность.
Указывает, следует ли приводить числовые данные к соответствующему формату накопителя перед выполнением операций суммирования. Выбор Cast before sum гарантирует, что результаты операций с затронутой суммой будут наиболее точно совпадать с результатами, полученными в большинстве процессоров цифровых сигналов. Выполнение операции приведения перед суммированием добавляет одну или две дополнительные операции квантования, которые могут добавить источники ошибок к результатам фильтра.
Если снять флажок Привести перед суммой (Cast before sum), фильтр предотвращает приведение добавленных элементов к формату суммы перед операцией сложения. Выберите этот параметр, чтобы получить наиболее точные результаты суммирования без учета оборудования, которое может использоваться фильтром. Формат ввода, на который ссылается команда Привести перед суммой, зависит от используемой структуры фильтра.
Эффект очистки или выбора Литейная форма перед суммой выглядит следующим образом:
Очищено (Cleared) - настраивает операции суммирования фильтра для сохранения добавленных значений в формате, перенесенном из предыдущей операции.
Выбрано (Selected) - настраивает операции суммирования фильтра для преобразования входного формата добавленных данных в формат вывода суммирования перед выполнением операции суммирования. Обычно выбор Cast before sum генерирует результаты суммирования, которые более точно совпадают с результатами цифровых сигнальных процессоров.
Панель создания кода содержит опции для различных реализаций завершенной конструкции фильтра. В зависимости от установки можно создать код MATLAB, VHDL и Verilog из разработанного фильтра. Можно также выбрать создание или обновление модели Simulink ® из разработанного фильтра. Эти параметры описаны в следующем разделе.

Дополнительные сведения об этой опции см. в разделе Открытие пользовательского интерфейса кодера HDL проекта фильтра в построителе фильтров (кодер HDL проекта фильтра).
Создание кода MATLAB на основе спецификаций фильтра
Создание функции, возвращающей фильтр в качестве вывода
При выборе этой опции создается функция, которая проектирует объект фильтра с помощью fdesign.
Создание функции фильтрации данных
При выборе этой опции создается функция, которая принимает данные в качестве входных и выводит данные, отфильтрованные с помощью разработанного фильтра. Тип данных вывода фильтра задается в соответствии с настройками типа данных на панели «Типы данных».
При нажатии на кнопку «Создать код MATLAB» открывается диалоговое окно «Сохранить файл». Укажите имя и расположение файла и сохраните файл. Теперь фильтр содержится в редактируемом файле.
Создание блоков и подсистем Simulink на основе разработанных фильтров
Если щелкнуть Создать модель (Generate Model), построитель фильтров создает блоки и подсистемы Simulink из разработанных фильтров.
При нажатии кнопки Создать модель (Generate Model) открывается диалоговое окно Экспорт в Simulink (Export to Simulink).

Имя блока (Block Name) - имя нового блока подсистемы, по умолчанию задано значение Фильтр (Filter).
Пункт назначения - Current сохраняет созданную модель в текущей модели Simulink. New создает новую модель, содержащую созданный блок. User Defined создает новую модель или подсистему в местоположении, указанном в User Defined.
Перезаписать созданный блок «Filter» - перезаписывает существующий блок с именем, указанным в поле «Имя блока». Снимите этот флажок, чтобы создать новый блок с таким же именем.
Построить модель с использованием базовых элементов (Build model using basic elements) - построение модели с использованием только базовых блоков.
Оптимизация для нулевого коэффициента усиления - удаление всех блоков нулевого коэффициента усиления из модели.
Оптимизация для преимуществ единства - заменяет все преимущества единства прямыми связями.
Оптимизировать для отрицательных коэффициентов усиления (Optimize for negative gears) - удаляет все блоки отрицательного коэффициента усиления и знак изменения в ближайшем блоке суммирования.
Оптимизировать цепочки задержки - заменяет цепочки задержки, состоящие из n единичных задержек, одной задержкой на n.
Оптимизировать для значений масштаба единицы (Optimize for unity scale values) - удаляет все умножения значений масштаба на 1 из структуры фильтра.
Обработка входных данных - укажите, как генерируемый блок фильтра или блок подсистемы обрабатывает входные данные. В зависимости от типа проектируемого фильтра может быть доступна одна или обе из следующих опций:
Columns as channels (frame based) - Блок обрабатывает каждый столбец входа как отдельный канал.
Elements as channels (sample based) - Блок обрабатывает каждый элемент входа как отдельный канал.
Дополнительные сведения об обработке на основе образцов и кадров см. в разделе Концепции на основе образцов и кадров (панель системных инструментов DSP).
Реализовать модель - построение модели с заданными параметрами.
Если на главной панели установлен флажок Использовать системный объект для реализации фильтра (Use a System object to implementation filter), кнопка Создать модель (Generate Model) на панели модели Simulink отключается при следующих условиях.
Выбрать ответ фильтра как Comb и арифметика на панели «Типы данных» как Fixed point.
Выбрать ответ фильтра как Arbitrary Response, Импульсная характеристика как IIR, задайте для параметра «Указать ответ» значение Magnitudes and phases или Frequency responseи Арифметика на панели «Типы данных» как Fixed point.
Эти настройки проектируют dsp.IIRFilter object™ системы с арифметикой фиксированной точки. Создание модели Simulink для фиксированной точки dsp.IIRFilter объект не поддерживается.
Выберите ответ фильтра из filterBuilder
Главное меню «Выбор ответа».
При наличии программного обеспечения DSP System Toolbox появляется следующее меню Response Selection.

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