fdesign.bandpass

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

Описание

fdesign.bandpass функция возвращает a 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 в списке входных параметров.

Примеры

свернуть все

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

Создайте полосно-пропускной фильтр 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

Определите доступные designmetods с помощью designmethods функция. Чтобы спроектировать фильтр Баттерворта, выберите 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 кГц.

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

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

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

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

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

Типы данных: 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, возвращенный как bandpass объект. Поля объекта зависят от spec входной вектор символов.

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

Введенный в R2009a