fdesign

Объект спецификации фильтров

Синтаксис

filtSpecs = fdesign.response
filtSpecs = fdesign.response(spec)
filtSpecs = fdesign.response(...,Fs)
filtSpecs = fdesign.response(...,magunits)

Описание

Объекты спецификации фильтров

filtSpecs = fdesign.response возвращает объект спецификации фильтров, filtSpecs, ответа фильтра response. Чтобы создать фильтры из filtSpecs, используйте один из методов разработки, перечисленных в Использовании Методов разработки Фильтра с Объектами Спецификации.

Примечание

Несколько из типов ответа фильтра, описанных ниже, только доступны, если ваша установка включает DSP System Toolbox™. DSP System Toolbox значительно расширяет функциональность, доступную для спецификации, проекта и анализа фильтров.

Вот то, как вы разрабатываете фильтры с помощью fdesign.

  1. Используйте fdesign. response, чтобы создать объект спецификации фильтров.

  2. Используйте designmethods, чтобы определить, какие методы разработки фильтра работают на ваш новый объект спецификации фильтров.

  3. Используйте design, чтобы применить ваш метод разработки фильтра от шага 2 до вашего объекта спецификации фильтров, чтобы создать объект фильтра.

  4. Используйте FVTool, чтобы осмотреть и анализировать ваш объект фильтра.

Примечание

fdesign не создает фильтры. fdesign возвращает объект спецификации фильтров, который содержит спецификации для фильтра, такие как сокращение полосы пропускания или затухание в полосе задерживания. Чтобы разработать фильтр от объекта спецификации фильтров filtSpecs, используйте filtSpecs с методом разработки фильтра, таким как butterIIRbutter = design(filtSpecs,'butter','SystemObject',true).

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

Метод Ответа fdesign

Описание

arbgrpdelay

fdesign.arbgrpdelay создает объект задать allpass произвольные фильтры групповой задержки. Требует DSP System Toolbox

arbmag

fdesign.arbmag создает объект задать БИХ-фильтры, которым задали произвольные ответы значения входные параметры.

arbmagnphase

fdesign.arbmagnphase создает объект задать БИХ-фильтры, которые имеют произвольное значение и фазовые отклики, заданные входными параметрами. Требует DSP System Toolbox.

audioweighting

fdesign.audioweighting создает объект спецификации фильтров для фильтров взвешивания аудио. Поддерживаемые типы взвешивания аудио: A, C, C-сообщение, ITU-T 0.41 и ITU-R взвешивание 468-4. Требует DSP System Toolbox

bandpass

fdesign.bandpass создает объект задать полосовые фильтры.

bandstop

fdesign.bandstop создает объект задать заграждающие фильтры.

ciccomp

fdesign.ciccomp создает объект задать фильтры, которые компенсируют CIC decimator или кривые отклика интерполятора. Требует DSP System Toolbox.

comb

fdesign.comb создает объект задать отметку или худой гребенчатый фильтр. Требует DSP System Toolbox.

decimator

fdesign.decimator создает объект задать decimators. Требует DSP System Toolbox

differentiator

fdesign.differentiator создает объект задать КИХ-фильтр дифференциатора.

fracdelay

fdesign.fracdelay создает объект задать дробные фильтры задержки. Требует DSP System Toolbox.

halfband

fdesign.halfband создает объект задать полуленточные фильтры. Требует DSP System Toolbox.

highpass

fdesign.highpass создает объект задать фильтры highpass.

hilbert

fdesign.hilbert создает объект задать КИХ преобразователь Гильберта.

interpolator

fdesign.interpolator создает объект задать интерполяторы. Требует DSP System Toolbox.

isinchp

fdesign.isinchp создает объект задать инверсию sinc highpass фильтр. Требует DSP System Toolbox.

isinclp

fdesign.isinclp создает объект задать инверсию sinc lowpass фильтры. Требует DSP System Toolbox.

lowpass

fdesign.lowpass создает объект задать фильтры lowpass.

notch

fdesign.notch создает объект задать фильтры метки. Требует DSP System Toolbox.

nyquist

fdesign.nyquist создает объект задать фильтры Найквиста. Требует DSP System Toolbox.

octave

fdesign.octave создает объект задать октаву и дробные фильтры октавы. Требует DSP System Toolbox.

parameq

fdesign.parameq создает объект задать фильтры параметрического эквалайзера. Требует DSP System Toolbox.

peak

fdesign.peak создает объект задать пиковые фильтры. Требует DSP System Toolbox.

polysrc

fdesign.polysrc создает объект задать полиномиальные фильтры конвертера частоты дискретизации. Требует DSP System Toolbox.

rsrc

fdesign.rsrc создает объект задать рационально-факторные преобразователи частоты дискретизации. Требует DSP System Toolbox.

Используйте синтаксис response doc fdesign. в посдказке MATLAB, чтобы получить справку на определенной структуре. Используя doc в синтаксисе как

doc fdesign.lowpass
doc fdesign.bandstop

получает больше информации о lowpass или bandstop объектах структуры.

Каждый response имеет свойство Specification, которое задает спецификации, чтобы использовать, чтобы разработать ваш фильтр. Можно использовать значения по умолчанию или задать свойство Specification, когда вы создаете объект спецификаций.

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

Свойства

fdesign возвращает объект спецификации фильтров. Каждый объект спецификации фильтров имеет следующие свойства.

PropertyName

Значение по умолчанию

Описание

Response

Зависит от выбранного типа

Задает тип фильтра, чтобы разработать, такие как интерполятор или полосовой фильтр. Это - значение только для чтения.

Specification

Зависит от выбранного типа

Задает характеристики фильтра, используемые, чтобы задать желаемую производительность фильтра, такую как частота среза, которую Fc или фильтр заказывают N.

Description

Зависит от типа фильтра, который вы выбираете

Содержит описания спецификаций фильтра, используемых, чтобы задать объект и спецификации фильтра, которые вы используете, когда вы создаете фильтр из объекта. Это - значение только для чтения.

NormalizedFrequency

Логический true

Определяет, использует ли вычисление фильтра нормированную частоту от 0 до 1, или диапазон частот от 0 до Fs/2, частота дискретизации. Принимает или true или false без одинарных кавычек. Фильтры взвешивания аудио не поддерживают нормированную частоту.

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

Добавленные свойства для многоскоростных фильтров

Описание

DecimationFactor

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

InterpolationFactor

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

PolyphaseLength

Многофазная длина является длиной каждого многофазного подфильтра, который составляет decimator или интерполятор или фильтры фактора изменения уровня. Общая длина фильтра является продуктом pl и факторов изменения уровня. pl должен быть ровным целым числом.

filtSpecs = fdesign.response(spec). В spec вы задаете переменные, чтобы использовать, которые задают ваш проект фильтра, такой как частота полосы пропускания или затухание полосы задерживания. Спецификации применяются к методу разработки фильтра, вы принимаете решение разработать свой фильтр.

Например, когда вы создаете значение по умолчанию lowpass объект спецификации фильтров, fdesign.lowpass устанавливает частоту полосы пропускания Fp, частота полосы задерживания Fst, затухание полосы задерживания Ast и пульсация полосы пропускания Ap:

filtSpecs = fdesign.lowpass

Используйте без останавливающейся точки с запятой, чтобы отобразить спецификации фильтра.

Спецификация по умолчанию 'Fp,Fst,Ap,Ast' является только одной из возможных спецификаций для fdesign.lowpass. Видеть все доступные спецификации:

filtSpecs = fdesign.lowpass;
set(filtSpecs,'Specification')

Программное обеспечение DSP System Toolbox поддерживает все доступные опции спецификации. Signal Processing Toolbox™ поддерживает подмножество опций спецификации. Смотрите страницы с описанием для объекта спецификации фильтров, чтобы определить, какую опцию спецификации ваша установка поддерживает.

Одно важное примечание - то, что опция спецификации, которую вы выбираете, определяет, какие методы разработки применяются к объекту спецификаций фильтра.

Спецификации, которые не содержат результат порядка фильтра в проектах минимального заказа, когда вы вызываете метод design:

filtSpecs = fdesign.lowpass;      % Specification is 'Fp,Fst,Ap,Ast'
FIReq = design(filtSpecs,'equiripple','SystemObject',true);
length(FIReq.Numerator)           % Returns 43. The filter order is 42
fvtool(FIReq)                     % View magnitude

filtSpecs = fdesign.response(...,Fs) задает частоту дискретизации в Гц, чтобы использовать в спецификациях фильтра. Частота дискретизации является скаляром, запаздывающим все другие входные параметры. Если вы задаете частоту дискретизации, все спецификации частоты находятся в Гц.

filtSpecs = fdesign.response(...,magunits) задает модули для любой спецификации значения, которую вы обеспечиваете во входных параметрах. magunits может быть одной из следующих опций:

  • 'linear' — задайте значение в линейных модулях

  • 'dB' — задайте значение в децибелах

  • 'squared' — задайте значение в блоках питания

Когда вы не используете аргумент magunits, fdesign принимает, что все значения находятся в децибелах. Обратите внимание на то, что fdesign хранит все спецификации значения в децибелах (преобразовывающий в децибелы когда необходимый) независимо от того, как вы задаете значения.

Используя методы разработки фильтра с объектами спецификации

После того, как вы создадите объект спецификации фильтров, вы используете метод разработки фильтра реализовать ваш фильтр с выбранным алгоритмом. Используйте designmethods, чтобы определить допустимые методы разработки для вашего объекта спецификации фильтров.

filtSpecs = fdesign.lowpass('N,Fc,Ap,Ast',10,0.2,0.5,40);
designmethods(filtSpecs)
% Design FIR equiripple filter
FIReq = design(filtSpecs,'equiripple','SystemObject',true);

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

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

Поддерживание функции

Описание

setspecs

Установите все спецификации одновременно.

designmethods

Возвратите методы разработки.

designopts

Возвратите входные параметры и значения по умолчанию, которые применяются к объекту спецификаций и методу

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

Конструкторы объекта фильтра берут входные параметры в том же порядке как setspecs и Specification. Введите doc setspecs в подсказке для получения дополнительной информации об использовании setspecs.

Когда первый вход к fdesign не является допустимой опцией Specification как 'N,Fc', fdesign принимает, что входной параметр является спецификацией фильтра и применяет ее с помощью опции Specification по умолчанию — 'Fp,Fst,Ap,Ast' для объекта lowpass, например.

Примеры

свернуть все

Этот пример требует продукта DSP System Toolbox.

Разработайте фильтр lowpass, который будет использоваться на сигнале, выбранном на уровне 96 кГц. Полоса пропускания фильтра расширяет до 20 кГц. Полоса задерживания фильтра запускается на уровне 24 кГц. Задайте пульсацию полосы пропускания 0,01 дБ и затухание полосы задерживания 80 дБ. Определите автоматически порядок, требуемый соответствовать спецификациям.

Настройте спецификации проекта фильтра и определите доступные алгоритмы проекта.

Fs = 96e3;
Fpass = 20e3;
Fstop = 24e3;
Apass = 0.01;
Astop = 80;

filtSpecs = fdesign.lowpass(Fpass,Fstop,Apass,Astop,Fs);
designmethods(filtSpecs)
Design Methods for class fdesign.lowpass (Fp,Fst,Ap,Ast):


butter
cheby1
cheby2
ellip
equiripple
ifir
kaiserwin
multistage

Разработайте equiripple КИХ-фильтр и эллиптический БИХ-фильтр, которые соответствуют спецификациям. Измерьте проекты, чтобы проверить, что фильтры удовлетворяют ограничения.

lpFIR = design(filtSpecs,'equiripple','SystemObject',true);
lpIIR = design(filtSpecs,'ellip','SystemObject',true);

FIRmeas = measure(lpFIR)
FIRmeas = 
Sample Rate      : 96 kHz      
Passband Edge    : 20 kHz      
3-dB Point       : 21.4297 kHz 
6-dB Point       : 21.8447 kHz 
Stopband Edge    : 24 kHz      
Passband Ripple  : 0.0092309 dB
Stopband Atten.  : 80.6014 dB  
Transition Width : 4 kHz       
 
IIRmeas = measure(lpIIR)
IIRmeas = 
Sample Rate      : 96 kHz     
Passband Edge    : 20 kHz     
3-dB Point       : 20.5524 kHz
6-dB Point       : 20.7138 kHz
Stopband Edge    : 24 kHz     
Passband Ripple  : 0.01 dB    
Stopband Atten.  : 80 dB      
Transition Width : 4 kHz      
 

Оцените и отобразите вычислительную стоимость каждого фильтра. equiripple КИХ-фильтр требует значительно большего количества коэффициентов, чем эллиптический БИХ-фильтр.

FIRcost = cost(lpFIR)
FIRcost = struct with fields:
                  NumCoefficients: 101
                        NumStates: 100
    MultiplicationsPerInputSample: 101
          AdditionsPerInputSample: 100

IIRcost = cost(lpIIR)
IIRcost = struct with fields:
                  NumCoefficients: 20
                        NumStates: 10
    MultiplicationsPerInputSample: 20
          AdditionsPerInputSample: 20

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

fvtool(lpFIR,lpIIR,'Fs',Fs);
legend('FIR Equiripple','Elliptic IIR')

Этот пример требует продукта DSP System Toolbox.

Разработайте КИХ с 100 касаниями lowpass decimator фильтр, который уменьшает частоту дискретизации сигнала с 60 кГц до 20 кГц. Полоса пропускания фильтра расширяет до 6 кГц. Задайте пульсацию полосы пропускания 0,01 дБ и затухание полосы задерживания 100 дБ.

Fs = 60e3;
N = 99;
Fpass = 6e3;
Apass = 0.01;
Astop = 100;
M = Fs/20e3;
 
filtSpecs = fdesign.decimator(M,'lowpass','N,Fp,Ap,Ast',N,Fpass,Apass,Astop,Fs);

Разработайте информацию о фильтре и отображении об этом.

decimFIR = design(filtSpecs,'equiripple','SystemObject',true);
info(decimFIR)
ans = 10x56 char array
    'Discrete-Time FIR Multirate Filter (real)               '
    '-----------------------------------------               '
    'Filter Structure   : Direct-Form FIR Polyphase Decimator'
    'Decimation Factor  : 3                                  '
    'Polyphase Length   : 34                                 '
    'Filter Length      : 100                                '
    'Stable             : Yes                                '
    'Linear Phase       : Yes (Type 2)                       '
    '                                                        '
    'Arithmetic         : double                             '

Визуализируйте ответ значения фильтра.

fvtool(decimFIR,'Fs',Fs)

Используйте объект спецификации фильтров, чтобы создать lowpass Фильтр Баттерворта со спецификацией по умолчанию, 'Fp,Fst,Ap,Ast'. Задайте частоту ребра полосы пропускания 0.4π рад/выборка, частота полосы задерживания 0.5π рад/выборка, пульсация полосы пропускания 1 дБ и затухание полосы задерживания 80 дБ.

filtSpecs = fdesign.lowpass(0.4,0.5,1,80);

Определите, какие методы разработки применяются к filtSpecs.

designmethods(filtSpecs)
Design Methods for class fdesign.lowpass (Fp,Fst,Ap,Ast):


butter
cheby1
cheby2
ellip
equiripple
ifir
kaiserwin
multistage

Можно использовать filtSpecs и метод разработки butter разработать Фильтр Баттерворта. Определите доступные проектные решения.

designoptions(filtSpecs,'butter')
ans = struct with fields:
           FilterStructure: {1x6 cell}
              SOSScaleNorm: 'ustring'
              SOSScaleOpts: 'fdopts.sosscaling'
              MatchExactly: {'passband'  'stopband'}
              SystemObject: 'bool'
    DefaultFilterStructure: 'df2sos'
       DefaultMatchExactly: 'stopband'
       DefaultSOSScaleNorm: ''
       DefaultSOSScaleOpts: [1x1 fdopts.sosscaling]
       DefaultSystemObject: 0

Порядок фильтра, необходимый, чтобы соответствовать набору конструктивных ограничений, должен также быть окружен к целочисленному значению. Это ослабляет некоторые ограничения, и, как следствие, некоторым спецификациям проекта соответствуют, в то время как другие превышены. Опция 'MatchExactly' позволяет вам совпадать с полосой пропускания или полосой задерживания точно при превышении спецификации для другой полосы. Разработайте фильтр так, чтобы он совпадал с полосой пропускания точно.

IIRbutter = design(filtSpecs,'butter','MatchExactly','passband', ...
    'SystemObject',true);

Используйте FVTool, чтобы визуализировать ответ значения фильтра.

fvtool(IIRbutter)

Если вам установили программное обеспечение DSP System Toolbox, предыдущая фигура появляется с маской спецификации фильтра.

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

Приложения

Функции

Представленный в R2009a