fdesign

Объект спецификации создания фильтра

Описание

Используйте fdesign функция, чтобы создать объект спецификации создания фильтра, который содержит технические требования для фильтра, такие как неравномерность в полосе пропускания, затухание в полосе задерживания и порядок фильтра. Затем используйте design функционируйте, чтобы спроектировать фильтр от объекта технических требований создания фильтра. Для примера см. Проект Lowpass Decimator.

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

Для большего количества опций управления см. Процедуру Создания фильтра. Для полного рабочего процесса см. Проект Фильтр в Fdesign — Обзор Процесса.

designSpecs = fdesign.response возвращает объект спецификации проекта для фильтра с данным response.

пример

designSpecs = fdesign.response(spec) задает переменные, чтобы использовать, которые задают ваше создание фильтра. Параметры создания фильтра применяются к методу создания фильтра, который вы выбираете для своего фильтра. Опция спецификации, которую вы выбираете, определяет, какие методы разработки применяются к fdesign объект.

designSpecs = fdesign.response(___,Fs) задает частоту дискретизации в Гц, чтобы использовать в технических требованиях фильтра. Скаляр частоты дискретизации должен быть последним входным параметром. Если вы задаете частоту дискретизации, все технические требования частоты находятся в Гц.

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

Примеры

свернуть все

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

Fs = 60e3;
N = 99;
Fpass = 6e3;
Apass = 0.01;
Astop = 100;
M = Fs/20e3;

Setup объект технических требований создания фильтра использование fdesign.decimator функция.

filtSpecs = fdesign.decimator(M,'lowpass','N,Fp,Ap,Ast',N,Fpass,Apass,Astop,Fs);

Спроектируйте КИХ lowpass decimator использование design функция.

Получившимся фильтром является dsp.FIRDecimator Система object™. Для получения дополнительной информации о том, как применить этот фильтр к потоковой передаче данных, обратитесь к dsp.FIRDecimator.

decimFIR = design(filtSpecs,'SystemObject',true)
decimFIR = 
  dsp.FIRDecimator with properties:

     NumeratorSource: 'Property'
           Numerator: [1x100 double]
    DecimationFactor: 3
           Structure: 'Direct form'

  Show all properties

Используйте info отобразить информацию о фильтре.

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.

fvtool(decimFIR,'Fs',Fs)

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

Настройте объект технических требований создания фильтра использование fdesign.lowpass функция.

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

filtSpecs = fdesign.lowpass(Fpass,Fstop,Apass,Astop,Fs);

Определите доступные алгоритмы проекта с помощью designmethods функция.

designmethods(filtSpecs,'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 функция, спроектируйте equiripple КИХ-фильтр и эллиптический БИХ-фильтр, которые выполняют техническим требованиям.

lpFIR = design(filtSpecs,'equiripple','SystemObject',true)
lpFIR = 
  dsp.FIRFilter with properties:

            Structure: 'Direct form'
      NumeratorSource: 'Property'
            Numerator: [1x101 double]
    InitialConditions: 0

  Show all properties

lpIIR = design(filtSpecs,'ellip','SystemObject',true)
lpIIR = 
  dsp.BiquadFilter with properties:

                   Structure: 'Direct form II'
             SOSMatrixSource: 'Property'
                   SOSMatrix: [5x6 double]
                 ScaleValues: [6x1 double]
           InitialConditions: 0
    OptimizeUnityScaleValues: true

  Show all properties

Вы можете также measure проекты, чтобы проверить, что фильтры удовлетворяют ограничениям.

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      
 

Оцените и отобразите вычислительный cost из каждого фильтра. 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')

Спроектируйте Фильтр Баттерворта lowpass, который имеет частоту ребра полосы пропускания 0.4π рад/выборка, частота полосы задерживания 0.5π рад/выборка, неравномерность в полосе пропускания 1 дБ и затухание в полосе задерживания 80 дБ.

Создайте lowpass объект спецификации создания фильтра использование fdesign.lowpass функция. Задайте расчетные параметры.

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

Чтобы просмотреть список методов разработки, доступных для объекта спецификации, используйте designmethods функция. Если несколько методов доступны, выберите тот, который лучше всего соответствует критериям расчета. В данном примере выберите 'butter'.

designmethods(lowpassSpecs,'SystemObject',true)
Design Methods that support System objects for class fdesign.lowpass (Fp,Fst,Ap,Ast):


butter
cheby1
cheby2
ellip
equiripple
ifir
kaiserwin
multistage

Кроме того, можно задать проектные решения, используемые в разработке фильтра. Чтобы видеть список доступных параметров, запустите designoptions функция на lowpassSpecs. Проектные решения зависят от метода разработки, который вы выбираете. Метод разработки, в этом случае, 'butter', должен быть задан в качестве аргумента к designoptions функция.

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

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

Получившимся фильтром является dsp.BiquadFiter Система object™. Для получения дополнительной информации о том, как применить этот фильтр на потоковую передачу данных, обратитесь к dsp.BiquadFilter.

IIRbutter = design(lowpassSpecs,'butter','MatchExactly','passband', ...
    'SystemObject',true)
IIRbutter = 
  dsp.BiquadFilter with properties:

                   Structure: 'Direct form II'
             SOSMatrixSource: 'Property'
                   SOSMatrix: [16x6 double]
                 ScaleValues: [17x1 double]
           InitialConditions: 0
    OptimizeUnityScaleValues: true

  Show all properties

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

fvtool(IIRbutter)

Входные параметры

свернуть все

Таблица задает возможные ответы фильтра.

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

Описание

arbgrpdelay

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

arbmag

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

arbmagnphase

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

audioweighting

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

bandpass

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

bandstop

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

ciccomp

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

comb

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

decimator

fdesign.decimator создает объект задать decimators.

differentiator

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

fracdelay

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

halfband

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

highpass

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

hilbert

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

interpolator

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

isinchp

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

isinclp

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

lowpass

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

notch

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

nyquist

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

octave

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

parameq

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

peak

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

polysrc

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

rsrc

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

Используйте doc fdesign.response синтаксис в посдказке MATLAB, чтобы получить справку на определенной структуре. Например, эта команда предоставляет больше информации об объекте спецификации lowpass:

doc fdesign.lowpass

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

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

Технические требования создания фильтра в виде вектора символов. Набор доступных опций спецификации зависит от fdesign. response функция. Для получения дополнительной информации обратитесь к отдельному fdesign. response страницы.

Создание фильтра основано на технических требованиях, предоставленных fdesign. response объект. Например, когда вы создаете объект спецификации создания фильтра lowpass по умолчанию, fdesign.lowpass, выражение спецификации установлено в 'Fp,Fst,Ap,Ast'. Параметры создания фильтра — Fp (частота полосы пропускания), Fst (частота полосы задерживания), Ap (неравномерность в полосе пропускания) и Ast (затухание в полосе задерживания) — установлено в значения по умолчанию. design функционируйте проектирует фильтр на основе этих параметров.

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

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

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

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

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

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

Частота дискретизации, чтобы использовать в технических требованиях фильтра, заданных в Гц. Скаляр частоты дискретизации должен быть последним входным параметром. Если вы задаете частоту дискретизации, все технические требования частоты находятся в Гц.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Модули для спецификации величины в виде:

  • 'dB' – децибелы

  • 'linear' – линейные модули

  • 'squared' – блоки питания

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

Выходные аргументы

свернуть все

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

PropertyName

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

Описание

Response

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

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

Specification

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

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

Description

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

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

NormalizedFrequency

Логический true

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

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

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

Описание

DecimationFactor

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

InterpolationFactor

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

PolyphaseLength

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

Больше о

свернуть все

Процедура создания фильтра

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

Вот шаги подробно:

  1. Создайте fdesign. response объект спецификации задать расчетные параметры.

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

  3. Если бы вы предпочитаете изменять проектные решения и хотели бы видеть список доступных параметров, запустить designoptions функция на объекте спецификации. Выход также показывает проектным решениям использование фильтра по умолчанию.

  4. Используйте design спроектировать фильтр от объекта спецификации фильтров. Задайте метод разработки (определенный из шага 2) как вход. Если проектные решения должны измениться от значений по умолчанию, задайте их как пары "имя-значение" после метода разработки.

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

    В качестве альтернативы используйте fvtool функция.

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

  6. Если вы анализируете фильтр и решаете, что фильтр удовлетворяет конструктивным ограничениям, можно применить объект фильтра к потоковой передаче входных данных. Для получения дополнительной информации о том, как передать данные объекту фильтра, отошлите к соответствующей Системе фильтра object™ страницы с описанием.

Для подробного примера на проекте и анализе, см. Спецификацию Фильтра Баттерворта Lowpass и Проект.

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