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 в списке входных параметров.

Примеры

свернуть все

Спроектируйте КИХ ограниченной полосы equiripple фильтр порядка 60 с полосой задерживания [12.8 22.4] kHz. Оба значения неравномерности в полосе пропускания ограничиваются к 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)

Измерьте характеристики частотной характеристики фильтра с помощью 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 использование 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)

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

Фильтр спроектирован первым созданием объекта технических требований проекта заграждающего фильтра и затем передачей объекта как вход к 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, выберите '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)

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

Создайте сигнал, который является суммой трех синусоид с частотами на уровне 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)

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

свернуть все

Выражение спецификации в виде одного из этих векторов символов:

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

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

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

Рассмотрите следующую спецификацию проекта 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 дБ ниже значения полосы пропускания для первого сокращения. Применяется к БИХ-фильтрам только.

Типы данных: 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', и набор частоты дискретизации к 8 000 Гц.

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