fdesign.bandstop

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

Описание

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

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

пример

bandstopSpecs = fdesign.bandstop создает объект спецификаций создания фильтра 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 в списке входных параметров.

Примеры

свернуть все

Спроектируйте фильтр с ограниченной конечной импульсной характеристикой equiripple порядка 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

Определите доступные designmetods с помощью 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] кГц. Примените фильтр к сигналу дискретного времени, состоящему из суперпозиции трех синусоидов дискретного времени.

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

Проектирование полосно-заграждающего фильтра

Создайте объект спецификаций создания фильтра bandstop с помощью 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 дБ ниже значения полосы пропускания для первого среза, заданная в нормированных частотных модулях. Применяется к БИХ.
F3dB2Частота точки 3 дБ ниже значения полосы пропускания для второго среза, заданная в нормированных частотных модулях. Применяется к БИХ.
Fc1Первая частота отсечения (нормированные модули), заданная с помощью Fcutoff1. Применяется к конечная импульсная характеристика.
Fc2Вторая частота отсечения (нормированные модули), заданная с помощью Fcutoff1. Применяется к конечная импульсная характеристика.
Fp1Частота в начале полосы пропускания, заданная как Fpass1 в нормированных частотных модулях.
Fp2Частота в конце полосы пропускания, заданная как Fpass2 в нормированных частотных модулях.
Fst1Частота в конце первой полосы упора, заданная как Fstop1 в нормированных частотных модулях.
Fst2Частота в начале второй упорной полосы, заданная как Fstop2 в нормированных частотных модулях.
NПорядок фильтрации для конечной импульсной характеристики фильтров. Или как числитель, так и порядки знаменателя для БИХ при 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'.

Для получения дополнительной информации о процедуре смотрите Процедуру создания фильтра. Для получения примера смотрите Проект Notch Filter.

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

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

Приведенные ниже аргументы описывают более подробную информацию для каждой опции выражения.

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

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

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

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

Рассмотрите следующую спецификацию проекта полосы пропускания, где обе полосы пропускания ограничены значением по умолчанию 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

Шумовая полоса фильтра в нормированных частотных модулях, заданная как положительная скалярная величина меньше F3dB2− <reservedrangesplaceholder0>.

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

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

Это частота точки 3 дБ ниже значения полосы пропускания для первого отключения. Применяется только к БИХ.

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

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

Это частота точки 3 дБ ниже значения полосы пропускания для второго среза. Применяется только к БИХ.

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

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

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

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

Введенный в R2009a