exponenta event banner

SOS

Преобразовать в разделы второго порядка

Описание

пример

sysobjsos = sos(sysobj) преобразует IIR дискретно-временной фильтр System object™ в форму секции второго порядка (SOS). sysobjsos выходные данные представляют собой dsp.BiquadFilter Системный объект.

sysobjsos = sos(sysobj,dir_flag) переставляет сечения второго порядка в соответствии с близостью к началу координат полюсов сечений.

Примеры

свернуть все

Преобразование объекта дискретного фильтра IIR в объект биквадратического фильтра, содержащий соответствующие разделы SOS.

Проектирование фильтра Butterworth 10-го порядка с использованием butter функция.

N = 10;
Fc = 0.4;
[b,a] = butter(N,Fc);

Создать dsp.IIRFilter объект и назначение проектируемых коэффициентов Numerator и Denominator свойства объекта.

iir = dsp.IIRFilter('Numerator',b,'Denominator',a)
iir = 
  dsp.IIRFilter with properties:

            Structure: 'Direct form II transposed'
            Numerator: [1x11 double]
          Denominator: [1x11 double]
    InitialConditions: 0

  Show all properties

Используйте sos функция преобразования объекта фильтра IIR в биквадратический фильтр, содержащий соответствующие секции SOS.

biquad = sos(iir)
biquad = 
  dsp.BiquadFilter with properties:

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

  Show all properties

Можно получить доступ к матрице SOS и свойствам масштабного значения биквадратического фильтра.

sMatrix = biquad.SOSMatrix
sMatrix = 5×6

    1.0000    2.0958    1.0984    1.0000   -0.3187    0.0313
    1.0000    2.0576    1.0602    1.0000   -0.3345    0.0826
    1.0000    1.9981    1.0005    1.0000   -0.3695    0.1958
    1.0000    1.9412    0.9436    1.0000   -0.4317    0.3969
    1.0000    1.9073    0.9097    1.0000   -0.5380    0.7410

sValues = biquad.ScaleValues
sValues = 6×1

    0.0005
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000

Для проверки сравните эти значения со значениями, полученными с помощью tf2sos функция.

[sMatrixfn,g] = tf2sos(b,a)
sMatrixfn = 5×6

    1.0000    2.0958    1.0984    1.0000   -0.3187    0.0313
    1.0000    2.0576    1.0602    1.0000   -0.3345    0.0826
    1.0000    1.9981    1.0005    1.0000   -0.3695    0.1958
    1.0000    1.9412    0.9436    1.0000   -0.4317    0.3969
    1.0000    1.9073    0.9097    1.0000   -0.5380    0.7410

g = 4.9945e-04
isequal(sMatrix,sMatrixfn)
ans = logical
   1

isequal(sValues(1),g)
ans = logical
   1

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

свернуть все

Объект дискретно-временного фильтра БИХ, указанный как dsp.IIRFilter Системный объект.

Флаг направления полюса, указанный как:

  • 'up' - Первая строка содержит полюса, ближайшие к началу координат, а последняя строка содержит полюса, ближайшие к единичной окружности.

  • 'down' - Секции упорядочены в противоположном направлении. Нули всегда спарены с ближайшими к ним полюсами.

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

свернуть все

Объект фильтра секции второго порядка, возвращаемый как dsp.BiquadFilter Системный объект. sos функция преобразует входной числитель БИХ-фильтра и коэффициенты знаменателя в матрицу SOS и значения шкалы и присваивает эти значения dsp.BiquadFilter объект.

См. также

| | | |

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