sos

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

Описание

пример

sysobjsos = sos(sysobj) преобразует БИХ фильтр в дискретном времени System object™ в форму second-order section (SOS). The sysobjsos выход a dsp.BiquadFilter Системный объект.

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

Примеры

свернуть все

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

Спроектируйте lowpass Фильтра Баттерворта 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 функция для преобразования объекта БИХ в биквадратичный фильтр, содержащий соответствующие разделы 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