Примечание
Блок-схема процесса, показанная на следующем рисунке, перечисляет шаги и показывает порядок процесса создания фильтра.
Первые четыре шага процесса создания фильтра относятся к объекту спецификаций фильтра, в то время как последние два шага включают в себя объект реализации фильтра. Оба этих объектов более подробно рассматриваются в следующих разделах. Шаг 5 - проект фильтра, является шагом перехода от объекта спецификаций фильтра к объекту реализации. Шаг анализа и верификации совершенно необязателен. Он предоставляет разработчику фильтров методы, гарантирующие соответствие фильтра всем критериям проекта. В зависимости от результатов этой верификации, можно выполнить циклический возврат к шагам 3 и 4, чтобы либо выбрать другой алгоритм, либо настроить текущий. Вы также можете вернуться к шагам 3 или 4 после фильтрации входных данных с помощью проектируемого фильтра (шаг 7) и обнаружить, что вы хотите настроить фильтр или изменить его дальше.
Схема показывает команду help для каждого шага. Введите линию справки в MATLAB® командная строка для получения инструкций и дополнительных ссылок на документацию для конкретного шага. Не все шаги должны выполняться явным образом. Например, вы можете перейти от шага 1 непосредственно к шагу 5, и промежуточные три шага сделаны для вас программным обеспечением.
Ниже приведены подробные данные для каждого из шагов, показанных выше.
Если вы вводите:
help fdesign/responses
Чтобы инициировать фильтр, необходимо выбрать ответ. В этом примере полосно-пропускающий фильтр Объект Спецификаций создается путем ввода следующего:
d = fdesign.bandpass
Спецификация является массивом расчётных параметров для данного фильтра. Спецификация является свойством объекта спецификаций.
Примечание
Спецификация отличается от объекта спецификаций. Объект спецификаций содержит спецификацию как одно из своих свойств.
Когда вы выбираете ответ фильтра, существует ряд различных спецификаций. Каждый содержит разную комбинацию расчётных параметров. После создания объекта спецификаций фильтра можно запросить доступные спецификации для этого ответа. Спецификации, отмеченные звездочкой, требуют использования DSP System Toolbox™.
d = fdesign.bandpass; % step 1 - choose the response set (d, 'specification')
ans = 16×1 cell array 'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2' 'N,F3dB1,F3dB2' 'N,F3dB1,F3dB2,Ap' 'N,F3dB1,F3dB2,Ast' 'N,F3dB1,F3dB2,Ast1,Ap,Ast2' 'N,F3dB1,F3dB2,BWp' 'N,F3dB1,F3dB2,BWst' 'N,Fc1,Fc2' 'N,Fc1,Fc2,Ast1,Ap,Ast2' 'N,Fp1,Fp2,Ap' 'N,Fp1,Fp2,Ast1,Ap,Ast2' 'N,Fst1,Fp1,Fp2,Fst2' 'N,Fst1,Fp1,Fp2,Fst2,C' 'N,Fst1,Fp1,Fp2,Fst2,Ap' 'N,Fst1,Fst2,Ast' 'Nb,Na,Fst1,Fp1,Fp2,Fst2'
d = fdesign.arbmag;
set(d,'specification')
ans = 7×1 cell array 'N,F,A' 'F,A,R' 'Nb,Na,F,A' 'N,B,F,A' 'N,B,F,A,C' 'B,F,A,R' 'Nb,Na,B,F,A'
The set
можно использовать команду для выбора одной из доступных спецификаций следующим образом:
d = fdesign.lowpass; % step 1: get a list of available specifications set (d, 'specification')
ans = 18×1 cell array 'Fp,Fst,Ap,Ast' 'N,F3dB' 'Nb,Na,F3dB' 'N,F3dB,Ap' 'N,F3dB,Ap,Ast' 'N,F3dB,Ast' 'N,F3dB,Fst' 'N,Fc' 'N,Fc,Ap,Ast' 'N,Fp,Ap' 'N,Fp,Ap,Ast' 'N,Fp,F3dB' 'N,Fp,Fst' 'N,Fp,Fst,Ap' 'N,Fp,Fst,Ast' 'N,Fst,Ap,Ast' 'N,Fst,Ast' 'Nb,Na,Fp,Fst'
% step 2: set the required specification set (d, 'specification', 'N,Fc')
fdesign
возвращает спецификацию по умолчанию для ответа, выбранного в Select a Response, и предоставляет значения по умолчанию для всех расчётных параметров, включенных в спецификацию. Доступность алгоритмов зависит от выбранной характеристики фильтра, расчётных параметров и доступности DSP System Toolbox. Другими словами, для того же lowpass изменение записи спецификации также изменяет доступные алгоритмы. В следующем примере для lowpass и спецификации 'N, Fc'
, доступен только один алгоритм -window
.
% step 2: set the required specification set (d, 'specification', 'N,Fc') % step 3: get available algorithms designmethods (d,'Systemobject',true)
Design Methods that support System objects for class fdesign.lowpass (N,Fc): window
'Fp,Fst,Ap,Ast'
, доступен ряд алгоритмов. set (d, 'specification', 'Fp,Fst,Ap,Ast') designmethods(d,'Systemobject',true)
Design Methods that support System objects for class fdesign.lowpass (Fp,Fst,Ap,Ast): butter cheby1 cheby2 ellip equiripple ifir kaiserwin multistage
design
функция. filt = design(d,'butter','Systemobject',true)
filt = dsp.BiquadFilter with properties: Structure: 'Direct form II' SOSMatrixSource: 'Property' SOSMatrix: [13×6 double] ScaleValues: [14×1 double] InitialConditions: 0 OptimizeUnityScaleValues: true Show all properties
filt
- объект реализации фильтра. Эта концепция обсуждается далее на следующем этапе.Если вы не выполняете этот шаг явным образом, design
автоматически выбирает оптимальный алгоритм для выбранного отклика и спецификации.
Опции индивидуальной настройки, доступные для любого заданного алгоритма, зависят не только от самого алгоритма, выбранного в Select an Algorithm, но и от спецификации, выбранной в Select a Specification. Чтобы исследовать все доступные опции, введите в командной строке MATLAB следующее:
help (d, 'algorithm-name')
d
является объектом спецификации фильтра и algorithm-name
- имя алгоритма в одинарных кавычках, таких как 'butter'
или 'cheby1'
. Применение этих опций индивидуальной настройки происходит во время проекта фильтра, поскольку эти опции являются свойствами объекта реализации фильтра, а не объекта спецификации.
Если вы не выполняете этот шаг явно, выбирается оптимальная структура алгоритма.
Чтобы создать фильтр, используйте design
команда:
% Design filter without specifying the algorithm filt = design(d,'Systemobject',true);
filt
является объектом фильтра и d
является объектом спецификаций. Этот код создает фильтр, не задавая алгоритм. Когда алгоритм не задан, программное обеспечение выбирает лучший из доступных. Чтобы применить алгоритм, выбранный в Select an Algorithm, используйте тот же design
команда, но задайте алгоритм следующим образом:
filt = design(d,'butter','Systemobject',true)
filt
является новым объектом фильтра и d
является объектом спецификаций.Чтобы получить помощь и увидеть все доступные опции, введите:
help fdesign/design
design
сама команда, но также опции, которые относятся к методу или алгоритму. При настройке алгоритма эти опции применяются на этом шаге. В следующем примере вы проектируете полосно-пропускающий фильтр, а затем изменяете структуру фильтра:filt = design(d, 'butter', 'filterstructure', 'df2sos','Systemobject',true)
filt = dsp.BiquadFilter with properties: Structure: 'Direct form II' SOSMatrixSource: 'Property' SOSMatrix: [13×6 double] ScaleValues: [14×1 double] InitialConditions: 0 OptimizeUnityScaleValues: true Show all properties
Шаг создания фильтра, так же как и первая задача выбора отклика, должен выполняться явным образом. Объект фильтра создается только при design
вызывается.
После разработки фильтра его можно проанализировать, чтобы определить, удовлетворяет ли фильтр критериям проекта. Анализ фильтра разбит на следующие основные разделы:
Анализ частотного диапазона - включает частотную характеристику, групповую задержку, диаграммы нулей и полюсов и фазовый отклик через функции freqz
, grpdelay
, zplane
, и phasez
.
Анализ временного интервала - включает импульс и переходную характеристику через функции impz
и stepz
.
Анализ реализации - Включает оценку затрат на реализацию фильтра, спектральную плотность степени выхода фильтра из-за округлого шума и оценку частотной характеристики фильтра через функции cost
, noisepsd
, и freqrespest
.
Для получения списка методов анализа для фильтра в дискретном времени введите в командной строке MATLAB следующее:
dsp.<sysobjName>.helpFilterAnalysis
Замените <sysobjName>
с именем Системной object™. Также можно просмотреть список методов анализа в категории Анализ фильтров.
Чтобы проанализировать фильтр, необходимо явно выполнить этот шаг.
После того, как фильтр разработан и оптимизирован, он может использоваться для фильтрации фактических входных данных.
y = filt(x)
Примечание
y = filt(x)
выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените y = filt(x)
с y =
step(filt,x)
.
Примечание
Если у вас есть Simulink®, у вас есть опция экспорта этого фильтра в блок Simulink с помощью realizemdl
команда. Чтобы получить справку по этой команде, введите:
help realizemdl