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 дециматорный фильтр, который уменьшает частоту дискретизации сигнала с 60 кГц до 20 кГц. Ширина полосы пропускания фильтра составляет до 6 кГц. Задайте неравномерность в полосе пропускания 0,01 дБ и затухание в полосе задерживания 100 дБ.

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

Настройте объект спецификаций создания фильтра с помощью fdesign.decimator функция.

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

Спроектируйте конечную импульсную характеристику lowpass дециматор, используя 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)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

Разработайте 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')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent 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]

Порядок фильтра, необходимый для соответствия набору проекта ограничений, также должен быть округлен до целого значения. Это ослабляет некоторые ограничения, и, как следствие, некоторые проекты спецификации выполняются, в то время как другие превышены. The '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)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

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

свернуть все

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

Метод отклика 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 дециматора или интерполяционной характеристики.

comb

fdesign.comb создает объект для задания узкополосного или пикового гребенчатого фильтра.

decimator

fdesign.decimator создает объект для задания дециматоров.

differentiator

fdesign.differentiator создает объект для задания конечной импульсной характеристики дифференцирующего фильтра.

fracdelay

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

halfband

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

highpass

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

hilbert

fdesign.hilbert создает объект для задания конечной импульсной характеристики трансформатора Гильберта.

interpolator

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

isinchp

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

isinclp

fdesign.isinclp создает объект для задания обратного lowpass синуса.

lowpass

fdesign.lowpass создает объект для задания lowpass.

notch

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

nyquist

fdesign.nyquist создает объект для задания фильтров 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.

Конструкторы объектов Filter берут входные параметры в том же порядке, что и 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 возвращает объект спецификации создания фильтра. Каждый объект спецификации создания фильтра имеет следующие свойства:

Имя свойства

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

Описание

Response

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

Определяет тип проектируемого фильтра, такого как интерполятор или полосно-пропускающий фильтр. Это значение доступно только для чтения.

Specification

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

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

Description

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

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

NormalizedFrequency

Логический true

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

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

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

Описание

DecimationFactor

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

InterpolationFactor

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

PolyphaseLength

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

Подробнее о

свернуть все

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

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

Вот шаги в деталях:

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

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

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

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

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

    Кроме того, используйте fvtool функция.

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

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

Подробный пример по проекту и анализу см. в разделе Lowpass Фильтра Баттерворта Спецификации и Проекта.

Введенный в R2009a