exponenta event banner

fdesign.bandstop

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

Описание

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

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

пример

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

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

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

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

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

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

  • Для затухания полосы останова установлено значение 60 дБ.

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

пример

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

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

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

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

Примеры

свернуть все

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

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

bandstopSpecs = fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',60,9.6e3,12.8e3,22.4e3,25.6e3,64000);

Ограничьте две полосы пропускания пульсацией полосы пропускания 1 дБ.

bandstopSpecs.Passband1Constrained = true;
bandstopSpecs.Apass1 = 1;
bandstopSpecs.Passband2Constrained = true;
bandstopSpecs.Apass2 = 1;

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

bandstopFilt = design(bandstopSpecs,'Systemobject',true)
bandstopFilt = 
  dsp.FIRFilter with properties:

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

  Show all properties

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

fvtool(bandstopFilt)

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.

measure(bandstopFilt)
ans = 
Sample Rate             : 64 kHz     
First Passband Edge     : 9.6 kHz    
First 3-dB Point        : 10.5255 kHz
First 6-dB Point        : 10.9058 kHz
First Stopband Edge     : 12.8 kHz   
Second Stopband Edge    : 22.4 kHz   
Second 6-dB Point       : 24.2866 kHz
Second 3-dB Point       : 24.6685 kHz
Second Passband Edge    : 25.6 kHz   
First Passband Ripple   : 0.11754 dB 
Stopband Atten.         : 69.3934 dB 
Second Passband Ripple  : 0.11761 dB 
First Transition Width  : 3.2 kHz    
Second Transition Width : 3.2 kHz    
 

Спроектируйте эллиптический полосовой фильтр минимального порядка. Процедура проектирования фильтра:

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

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

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

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

Конструкция fdesign.bandstop в состоянии по умолчанию и введите спецификации конструкции в функцию.

bandstopSpecs = fdesign.bandstop(.3,.4,.6,.7,.5,60,1)
bandstopSpecs = 
  bandstop with properties:

               Response: 'Bandstop'
          Specification: 'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2'
            Description: {7x1 cell}
    NormalizedFrequency: 1
                 Fpass1: 0.3000
                 Fstop1: 0.4000
                 Fstop2: 0.6000
                 Fpass2: 0.7000
                 Apass1: 0.5000
                  Astop: 60
                 Apass2: 1

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

designmethods(bandstopSpecs,'Systemobject',true)
Design Methods that support System objects for class fdesign.bandstop (Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2):


butter
cheby1
cheby2
ellip
equiripple
kaiserwin

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

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

Используйте design для проектирования фильтра. Проход 'ellip' и спецификации, задаваемые переменной 'bandstopSpecs', в качестве входных аргументов.

bsFilter = design(bandstopSpecs,'ellip','Systemobject',true)
bsFilter = 
  dsp.BiquadFilter with properties:

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

  Show all properties

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

fvtool(bsFilter)

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.

Создайте полосовой фильтр для отбраковки дискретной полосы частот между 3δ/8 и 5λ/8 рад/выборка. При частоте дискретизации 48 кГц эти значения преобразуются в диапазон частот [9 15] кГц. Применить фильтр к дискретно-временному сигналу, состоящему из наложения трёх дискретно-временных синусоид.

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

Проектирование полосового фильтра

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

bandstopSpecs = fdesign.bandstop(1/4,3/8,5/8,6/8,1,60,1)
bandstopSpecs = 
  bandstop with properties:

               Response: 'Bandstop'
          Specification: 'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2'
            Description: {7x1 cell}
    NormalizedFrequency: 1
                 Fpass1: 0.2500
                 Fstop1: 0.3750
                 Fstop2: 0.6250
                 Fpass2: 0.7500
                 Apass1: 1
                  Astop: 60
                 Apass2: 1

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

designmethods(bandstopSpecs)
Design Methods for class fdesign.bandstop (Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2):


butter
cheby1
cheby2
ellip
equiripple
kaiserwin

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

bsFilter = design(bandstopSpecs,'equiripple','Systemobject',true)
bsFilter = 
  dsp.FIRFilter with properties:

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

  Show all properties

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

fvtool(bsFilter,'Fs',48000)

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 кГц, 12 кГц и 16 кГц. Инициализируйте анализатор спектра для просмотра исходного сигнала и отфильтрованного сигнала.

Sine1 = dsp.SineWave('Frequency',1e3,'SampleRate',44.1e3,'SamplesPerFrame',4000);
Sine2 = dsp.SineWave('Frequency',12e3,'SampleRate',44.1e3,'SamplesPerFrame',4000);
Sine3 = dsp.SineWave('Frequency',16e3,'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','Filtered signal'};

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

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

for i = 1 : 1000
    x = Sine1()+Sine2()+Sine3();
    y = bsFilter(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, Filtered signal.

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

свернуть все

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

  • 'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2' (по умолчанию)

  • 'N,F3dB1,F3dB2'

  • 'N,F3dB1,F3dB2,Ap' *

  • 'N,F3dB1,F3dB2,Ap,Ast' *

  • 'N,F3dB1,F3dB2,Ast' *

  • 'N,F3dB1,F3dB2,BWp' *

  • 'N,F3dB1,F3dB2,BWst' *

  • 'N,Fc1,Fc2'

  • 'N,Fc1,Fc2,Ap1,Ast,Ap2'

  • 'N,Fp1,Fp2,Ap'

  • 'N,Fp1,Fp2,Ap,Ast'

  • 'N,Fp1,Fst1,Fst2,Fp2'

  • 'N,Fp1,Fst1,Fst2,Fp2,C' *

  • 'N,Fp1,Fst1,Fst2,Fp2,Ap' *

  • 'N,Fst1,Fst2,Ast'

  • 'Nb,Na,Fp1,Fst1,Fst2,Fp2' *

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

Вариант спецификацииОписание
ApДопустимое количество пульсации в полосе пропускания, указанное как Apass в дБ.
Ap1Допустимое количество пульсаций в первой полосе пропускания, указанное как Apass1 в дБ.
Ap2Допустимое количество пульсаций во второй полосе пропускания, указанное как Apass2 в дБ.
AstЗатухание полосы останова (дБ), указанное с помощью Astop.
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Порядок нумераторов для фильтров БИХ, указанный с помощью DenOrder собственность.
NaПорядок знаменателя для фильтров БИХ, указанный с помощью NumOrder собственность.
C

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

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

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

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

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

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

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

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

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

Пример: bandstopSpecs = fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',n,fp1,fst1,fst2,fp2,c)

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

Порядок фильтров для фильтров 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,Fp1,Fst1,Fst2,Fp2,C', нельзя одновременно задавать ограничения для всех трех областей (две полосы пропускания и одна полоса останова). Ограничения можно задать в одной или двух областях данных.

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

Пример: spec = fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',10,0.35,0.45,0.55,0.65); spec.Passband1Constrained=true; spec.Passband2Constrained=true;

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

Указанное ap значение применяется как к первой полосе пропускания, так и ко второй полосе пропускания.

Типы данных: 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

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

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

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

Типы данных: 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

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

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

bandstopSpecs = fdesign.bandstop('Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2',1600,2000,2400,2800,1,80,.5,8000); filt = design(bandstopSpecs,'Systemobject',true);

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

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

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

свернуть все

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

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

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