fdesign.bandpass

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

Описание

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

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

пример

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

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

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

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

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

  • Первый набор затухания в полосе задерживания к 60 дБ.

  • Набор неравномерности в полосе пропускания к 1 дБ.

  • Второй набор затухания в полосе задерживания к 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 в списке входных параметров.

Примеры

свернуть все

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

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

Спроектируйте БИХ-полосовой фильтр Баттерворта. Процедура создания фильтра:

  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 использование 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)

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

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

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

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

свернуть все

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

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

Пропускная способность полосы пропускания фильтра в нормированных единицах частоты в виде положительной скалярной величины меньше, чем 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', и набор частоты дискретизации к 8 000 Гц.

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

Для просмотра документации необходимо авторизоваться на сайте