exponenta event banner

fdesign.bandpass

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

Описание

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

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

пример

bandpassSpecs = fdesign.bandpass создает объект спецификации конструкции полосового фильтра со следующими значениями по умолчанию:

  • Частота первой полосы останова установлена равной 0,35.

  • Первая частота полосы пропускания установлена равной 0,45.

  • Вторая частота полосы пропускания установлена равной 0,55.

  • Частота второй полосы останова установлена равной 0,65.

  • Ослабление первой полосы останова установлено в 60 дБ.

  • Пульсация полосы пропускания установлена на 1dB.

  • Затухание второй полосы останова установлено на 60 дБ.

пример

bandpassSpecs = fdesign.bandpass(spec,value1,...,valueN) создает объект спецификации полосового фильтра с определенным порядком фильтра, частотой стоп-полосы, частотой полосы пропускания и другими вариантами спецификации. Укажите параметры, которые необходимо указать в выражении spec. После выражения укажите значение для каждого параметра. Если значения после spec , функция принимает значения по умолчанию.

bandpassSpecs = fdesign.bandpass(___,Fs) обеспечивает частоту дискретизации в Гц фильтруемого сигнала. Fs должен быть указан как скаляр, задающий другие предоставленные числовые значения. В этом случае все частоты в спецификациях также представлены в Гц.

Технические условия на проектирование fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',.4,.5,.6,.7,60,1,80) проектирует тот же фильтр, что и fdesign.bandstop('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',1600,2000,2400,2800,60,1,80,8000)

bandpassSpecs = fdesign.bandpass(___,magunits) предоставляет единицы измерения для заданной величины. magunits может быть одним из следующих: 'linear', 'dB', или 'squared'. Если этот аргумент опущен, объект предполагает, что единицами измерения являются 'dB'. Параметры величины всегда преобразуются и сохраняются в децибелах независимо от того, как они были заданы. Если Fs предоставляется, magunits должны следовать Fs в списке входных аргументов.

Примеры

свернуть все

Спроектируйте эквиптный фильтр FIR с ограниченной полосой частот порядка 100 с полосой пропускания [1, 1,4] кГц. Оба значения затухания полосы останова ограничены 60 дБ. Частота дискретизации составляет 10 кГц.

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

bandpassSpecs = fdesign.bandpass('N,Fst1,Fp1,Fp2,Fst2,C',100,800,1e3,1.4e3,1.6e3,1e4);

Ограничьте две полосы с затуханием полосы 60 дБ.

bandpassSpecs.Stopband1Constrained = true;
bandpassSpecs.Astop1 = 60;
bandpassSpecs.Stopband2Constrained = true;
bandpassSpecs.Astop2 = 60;

Спроектируйте полосовой фильтр с помощью design функция. Результирующим фильтром является dsp.FIRFilter object™ системы. Дополнительные сведения о применении этого фильтра к потоковым данным см. в разделе dsp.FIRFilter.

bandpassFilt = design(bandpassSpecs,'Systemobject',true)
bandpassFilt = 
  dsp.FIRFilter with properties:

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

  Show all properties

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

fvtool(bandpassFilt)

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.

Измерить частотную характеристику фильтра с помощью measure. Пульсация полосы пропускания немного превышает 2 дБ. Поскольку конструкция ограничивает обе стопорные полосы, невозможно ограничить пульсацию полосы пропускания.

measure(bandpassFilt)
ans = 
Sample Rate             : 10 kHz     
First Stopband Edge     : 800 Hz     
First 6-dB Point        : 946.7621 Hz
First 3-dB Point        : 975.1807 Hz
First Passband Edge     : 1 kHz      
Second Passband Edge    : 1.4 kHz    
Second 3-dB Point       : 1.4248 kHz 
Second 6-dB Point       : 1.4533 kHz 
Second Stopband Edge    : 1.6 kHz    
First Stopband Atten.   : 60.0614 dB 
Passband Ripple         : 2.1443 dB  
Second Stopband Atten.  : 60.0399 dB 
First Transition Width  : 200 Hz     
Second Transition Width : 200 Hz     
 

Проектирование полосового фильтра BIR Butterworth. Процедура проектирования фильтра:

  1. Укажите спецификации конструкции фильтра с помощью fdesign функция.

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

  3. Чтобы определить доступные варианты конструкции на выбор, используйте designoptions функция.

  4. Спроектируйте фильтр с помощью design функция.

Создание объекта спецификации конструкции полосового фильтра по умолчанию с использованием fdesign.bandpass.

bandpassSpecs = fdesign.bandpass
bandpassSpecs = 
  bandpass with properties:

               Response: 'Bandpass'
          Specification: 'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2'
            Description: {7x1 cell}
    NormalizedFrequency: 1
                 Fstop1: 0.3500
                 Fpass1: 0.4500
                 Fpass2: 0.5500
                 Fstop2: 0.6500
                 Astop1: 60
                  Apass: 1
                 Astop2: 60

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

designmethods(bandpassSpecs,'Systemobject',true)
Design Methods that support System objects for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2):


butter
cheby1
cheby2
ellip
equiripple
kaiserwin

При проектировании фильтра можно задать дополнительные варианты конструкции. Просмотр списка параметров с помощью designoptions функция. Функция также показывает варианты конструкции по умолчанию, используемые фильтром.

designoptions(bandpassSpecs,'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

Используйте design для проектирования фильтра. Проход 'butter' и спецификации, задаваемые переменной bandpassSpecs, в качестве входных аргументов. Укажите 'matchexactly' вариант конструкции для 'passband'.

bpFilter = design(bandpassSpecs,'butter','matchexactly','passband','SystemObject',true)
bpFilter = 
  dsp.BiquadFilter with properties:

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

  Show all properties

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

fvtool(bpFilter)

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.

Полосовой фильтр - дискретно-временной синусоидальный сигнал, состоящий из трех синусоид на частотах 1 кГц, 10 кГц и 15 кГц.

Создайте полосовой фильтр FIR Equiripple, сначала создав объект спецификации конструкции полосового фильтра, а затем сконструировав фильтр с использованием этих спецификаций.

Расчетный полосовой фильтр

Создание объекта спецификации конструкции полосового фильтра с помощью fdesign.bandpass.

bandpassSpecs = fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2', ...
    1/4,3/8,5/8,6/8,60,1,60);

Перечислите доступные методы конструирования для этого объекта.

designmethods(bandpassSpecs)
Design Methods for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2):


butter
cheby1
cheby2
ellip
equiripple
kaiserwin

Для проектирования фильтра Equiripple выберите 'equiripple'.

bpFilter = design(bandpassSpecs,'equiripple','Systemobject',true)
bpFilter = 
  dsp.FIRFilter with properties:

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

  Show all properties

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

fvtool(bpFilter,'Fs',44100)

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.

Создание синусоидального сигнала

Создайте сигнал, который представляет собой сумму трех синусоид с частотами 1 кГц, 10 кГц и 15 кГц. Инициализируйте анализатор спектра для просмотра исходного сигнала и отфильтрованного сигнала.

Sine1 = dsp.SineWave('Frequency',1e3,'SampleRate',44.1e3,'SamplesPerFrame',4000);
Sine2 = dsp.SineWave('Frequency',10e3,'SampleRate',44.1e3,'SamplesPerFrame',4000);
Sine3 = dsp.SineWave('Frequency',15e3,'SampleRate',44.1e3,'SamplesPerFrame',4000);

SpecAna = dsp.SpectrumAnalyzer('PlotAsTwoSidedSpectrum',false, ...
    'SampleRate',Sine1.SampleRate, ...
    'NumInputPorts',2,...
    'ShowLegend',true, ...
    'YLimits',[-240,45]);

SpecAna.ChannelNames = {'Original noisy signal','Bandpass filtered signal'};

Синусоидальный сигнал фильтра

Фильтрация синусоидального сигнала с помощью разработанного полосового фильтра. Просмотрите исходный сигнал и отфильтрованный сигнал в анализаторе спектра. Тональный сигнал на частоте 1 кГц отфильтровывается и ослабляется. Тональный сигнал на частоте 10 кГц не изменяется, и тональный сигнал на частоте 15 кГц слегка ослабляется, поскольку он появляется в переходной полосе фильтра.

for i = 1 : 1000
    x = Sine1()+Sine2()+Sine3();
    y = bpFilter(x);
    SpecAna(x,y);
end
release(SpecAna)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type line. These objects represent Original noisy signal, Bandpass filtered signal.

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

свернуть все

Выражение спецификации, указанное как один из следующих векторов символов:

  • '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'

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

Вариант спецификацииОписание
ApДопустимое количество пульсации в полосе пропускания, указанное как Apass в дБ.
AstЗатухание полосы останова (дБ), указанное с помощью Astop.
Ast1Затухание в первой полосе останова (дБ), указанное с помощью Astop1.
Ast2Затухание во втором стоп-диапазоне (дБ), указанное с помощью Astop2.
BWpПолоса пропускания полосы пропускания фильтра, указанная как BWpass в нормированных частотных единицах.
BWstШирина частоты между двумя частотами стоп-полосы, заданная как BWstop в нормированных частотных единицах.
F3dB1Частота точки 3 дБ ниже значения полосы пропускания для первого отсечения, заданного в нормированных единицах частоты. Применяется к фильтрам IIR.
F3dB2Частота точки 3 дБ ниже значения полосы пропускания для второго среза, заданного в нормированных единицах частоты. Применяется к фильтрам IIR.
Fc1Первая частота отсечки (нормированные единицы частоты), заданная с помощью Fcutoff1. Применяется к фильтрам FIR.
Fc2Вторая частота отсечки (нормированные единицы частоты), заданная с помощью Fcutoff1. Применяется к фильтрам FIR.
Fp1Частота на краю начала полосы пропускания, указанная как Fpass1 в нормированных частотных единицах.
Fp2Частота на краю конца полосы пропускания, указанная как Fpass2 в нормированных частотных единицах.
Fst1Частота на краю конца первой стоп-полосы, указанная как Fstop1 в нормированных частотных единицах.
Fst2Частота на краю начала второй стоп-полосы, указанная как Fstop2 в нормированных частотных единицах.
NПорядок фильтров для фильтров FIR. Или и числитель, и знаменатель для фильтров IIR, когда Na и Nb не предоставляются. Указано с помощью FilterOrder.
NbПорядок нумераторов для фильтров БИХ, указанный с помощью NumOrder собственность.
NaПорядок знаменателя для фильтров БИХ, указанный с помощью DenOrder собственность.
C

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

Дополнительные сведения см. в разделе c.

Графически характеристики фильтра выглядят аналогично показанным на этом рисунке.

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

Методы конструирования, доступные для конструирования фильтра, зависят от выражения спецификации. Эти методы можно получить с помощью designmethods функция. В этой таблице перечислены все выражения спецификации, поддерживаемые fdesign.bandpass и имеющиеся соответствующие методы проектирования.

Выражение спецификацииПоддерживаемые методы проектирования
'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2'butter, cheby1, cheby2, ellip, equiripple, kaiserwin
'N,F3dB1,F3dB2'butter
'N,F3dB1,F3dB2,Ap'cheby1
'N,F3dB1,F3dB2,Ast'cheby2, ellip
'N,F3dB1,F3dB2,Ast1,Ap,Ast2'ellip
'N,F3dB1,F3dB2,BWp'cheby1
'N,F3dB1,F3dB2,BWst'cheby2
'N,Fc1,Fc2'window
'N,Fc1,Fc2,Ast1,Ap,Ast2'fircls
'N,Fp1,Fp2,Ap'cheby1
'N,Fp1,Fp2,Ast1,Ap,Ast2'ellip
'N,Fst1,Fp1,Fp2,Fst2'iirlpnorm, equiripple, firls
'N,Fst1,Fp1,Fp2,Fst2,C'equiripple
'N,Fst1,Fp1,Fp2,Fst2,Ap'ellip
'N,Fst1,Fst2,Ast'cheby2
'Nb,Na,Fst1,Fp1,Fp2,Fst2'iirlpnorm

Чтобы создать фильтр, вызовите design функция с одним из этих методов проектирования в качестве входных данных. Вы можете выбрать тип ответа фильтра, передав его 'FIR' или 'IIR' в design функция. Дополнительные сведения см. в разделе design. Войти help(bandpassSpecs,'method') в командной строке MATLAB ® для получения подробной справки по вариантам конструкции для данного метода конструирования.

Значения спецификации, указанные как список значений, разделенных запятыми. Укажите значение для каждого параметра в spec в том же порядке, в котором параметры отображаются в выражении.

Пример: bandpassSpecs = fdesign.bandpass('N,Fc1,Fc2,Ast1,Ap,Ast2',n,fc1,fc2,ast1,ap,ast2)

Приведенные ниже входные аргументы содержат дополнительные сведения для каждого параметра в выражении.

Порядок фильтров для фильтров FIR, заданный как положительное целое число. В случае конструкции фильтра БИХ, если nb и na не предоставляются, это значение интерпретируется как порядок числителя и порядок знаменателя.

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

Порядок числителя для фильтров IIR, заданный как неотрицательное целое число.

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

Порядок знаменателя для фильтров БИХ, заданный как положительное целое число.

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

Это позволяет задать пульсацию полосы пропускания или затухание полосы останова для конструкций фиксированного порядка в одной или двух из трех полос.

В спецификации 'N,Fst1,Fp1,Fp2,Fst2,C', нельзя одновременно задавать ограничения для всех трех областей (две полосы останова и одна полоса пропускания). Ограничения можно задать в одной или двух областях данных.

Рассмотрим следующую спецификацию полосовой конструкции, в которой оба упора ограничены значением по умолчанию 60 дБ.

Пример: spec = fdesign.bandpass('N,Fst1,Fp1,Fp2,Fst2,C',100,800,1e3,1.4e3,1.6e3,1e4); spec.Stopband1Constrained=true; spec.Stopband2Constrained=true;

Пульсация полосы пропускания, заданная как положительный скаляр в дБ. Если magunits является 'linear' или 'squared', пульсация полосы пропускания преобразуется и сохраняется в дБ функцией независимо от того, как она была указана.

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

Затухание полосы останова, указанное как положительный скаляр в дБ. Если magunits является 'linear' или 'squared'затухание полосы останова преобразуется и сохраняется в дБ функцией независимо от того, как она была задана.

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

Затухание в первой полосе останова, определяемой как положительный скаляр в дБ. Если magunits является 'linear' или 'squared', первое затухание полосы останова преобразуется и сохраняется в дБ функцией независимо от того, как она была задана.

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

Затухание во второй полосе останова, определяемой как положительный скаляр в дБ. Если magunits является 'linear' или 'squared'второе затухание полосы останова преобразуется и сохраняется в дБ функцией независимо от того, как она была задана.

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

Первая частота 3 дБ, заданная как положительный скаляр в нормированных частотных единицах.

Это частота точки 3 дБ ниже значения полосы пропускания для первого отсечения. Этот входной аргумент применяется только к фильтрам IIR.

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

Вторая частота 3 дБ, заданная как положительный скаляр в нормированных частотных единицах.

Это частота точки 3 дБ ниже значения полосы пропускания для второго отсечения. Этот входной аргумент применяется только к фильтрам IIR.

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

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

Этот входной аргумент применяется только к фильтрам FIR.

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

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

Этот входной аргумент применяется только к фильтрам FIR.

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

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

Это частота на краю конца первой полосы останова.

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

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

Это частота на краю начала второй полосы останова.

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

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

Это частота на краю начала первой полосы пропускания.

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

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

Это частота на краю конца полосы пропускания.

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

Ширина полосы пропускания фильтра в нормированных частотных единицах, заданная как положительный скаляр меньше F3dB2F3dB1.

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

Ширина частоты между двумя частотами стоп-полосы, заданная как положительный скаляр в нормированных единицах частоты.

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

Частота дискретизации фильтруемого сигнала, заданная как скаляр в Гц. Укажите частоту дискретизации как скаляр, задающий другие предоставленные числовые значения. Когда Fs предоставляется, Fs принимается в Гц, как и все другие значения частоты. Обратите внимание, что изменять строку спецификации не требуется.

В следующей конструкции строка спецификации имеет значение 'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2'и частота дискретизации установлена равной 8000 Гц.

bandpassSpecs = fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',1600,2000,2400,2800,60,1,80,8000); filt = design(bandpassSpecs,'Systemobject',true);

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

Единицы измерения величины, указанные как 'dB', 'linear', или 'squared'. Если этот аргумент опущен, объект принимает единицы величины, которые должны быть 'dB'. Обратите внимание, что параметры величины всегда преобразуются и сохраняются в дБ независимо от того, как они были заданы. Если Fs является одним из входных аргументов, magunits должен быть указан после Fs в списке входных аргументов.

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

свернуть все

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

Рассмотрим пример, где spec аргумент имеет значение 'N,Fc1,Fc2', и соответствующие значения устанавливаются как 10, 0.6, и 0.8соответственно. bandpass объект спецификации конструкции фильтра заполняется следующими полями:

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