exponenta event banner

fdesign

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

Описание

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

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

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

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

пример

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

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

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

Примеры

свернуть все

Разработка 100-отводного дециматорного фильтра нижних частот FIR, который уменьшает частоту дискретизации сигнала с 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);

Спроектируйте прореживатель нижних частот FIR с помощью 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.

Сконструировать фильтр нижних частот для использования в сигнале, дискретизированном на частоте 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 функция, проектирование эквиптного FIR-фильтра и эллиптического IIR-фильтра, которые соответствуют спецификациям.

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 каждого фильтра. Четкий КИХ-фильтр требует гораздо больше коэффициентов, чем эллиптический БИХ-фильтр.

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.

Сконструируйте фильтр Баттерворта нижних частот, который имеет граничную частоту полосы пропускания 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)

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-message, ITU-T 0,41 и ITU-R 468-4 weighting.

bandpass

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

bandstop

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

ciccomp

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

comb

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

decimator

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

differentiator

fdesign.differentiator создает объект для задания фильтра дифференциатора FIR.

fracdelay

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

halfband

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

highpass

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

hilbert

fdesign.hilbert создает объект для задания трансформатора Hilbert FIR.

interpolator

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

isinchp

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

isinclp

fdesign.isinclp создает объект для задания обратных sinc-фильтров нижних частот.

lowpass

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

doc fdesign.lowpass

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

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

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

Конструкция фильтра основана на спецификациях, предоставленных fdesign.response объект. Например, при создании объекта спецификации конструкции фильтра нижних частот по умолчанию fdesign.lowpass, выражение спецификации имеет значение 'Fp,Fst,Ap,Ast'. Расчетные параметры фильтра - Fp (частота полосы пропускания), Fst (частота стоп-полосы), Ap (passband ripple), и 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' является значением по умолчанию для объекта нижних частот.

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

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

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

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