主要内容

sos

转换为二阶节

说明

sosFilt = sos(sysobj) 将 IIR 离散时间滤波器转换为二阶节 (SOS) 滤波器。sosFilt 输出是一个 dsp.SOSFilter System object™ 对象。

示例

sosFilt = sos(sysobj,dir_flag) 根据二阶节极点距离原点的距离来重新排列二阶节。

示例

全部折叠

将 IIR 离散时间滤波器对象转换为包含对应 SOS 节的 SOS 滤波器对象。

使用 butter 函数设计一个 10 阶低通巴特沃斯滤波器。

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

创建一个 dsp.IIRFilter 对象,并将设计的系数赋给该对象的 NumeratorDenominator 属性。

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

            Structure: 'Direct form II transposed'
            Numerator: [4.9945e-04 0.0050 0.0225 0.0599 0.1049 0.1259 0.1049 0.0599 0.0225 0.0050 4.9945e-04]
          Denominator: [1 -1.9924 3.0195 -2.8185 2.0387 -1.0545 0.4144 -0.1157 0.0225 -0.0027 1.4876e-04]
    InitialConditions: 0

  Show all properties

使用 sos 函数将 IIR 滤波器对象转换为包含对应 SOS 节的 SOS 滤波器。

sosFilt = sos(iir)
sosFilt = 
  dsp.SOSFilter with properties:

            Structure: 'Direct form II transposed'
    CoefficientSource: 'Property'
            Numerator: [5×3 double]
          Denominator: [5×3 double]
       HasScaleValues: true
          ScaleValues: [4.9945e-04 1 1 1 1 1]

  Show all properties

您可以从 SOS 滤波器对象获取 SOS 矩阵和缩放值。

sMatrix = [sosFilt.Numerator,sosFilt.Denominator]
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 = sosFilt.ScaleValues
sValues = 1×6

    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

输入参数

全部折叠

IIR 离散时间滤波器对象,指定为 dsp.IIRFilter System object。

极点方向标志,指定为:

  • 'up' - 第一行包含最接近原点的极点,最后一行包含最接近单位圆的极点。

  • 'down' - 各节以相反方向排序。零点始终与最接近它的极点配对。

输出参量

全部折叠

二阶节滤波器对象,以 dsp.SOSFilter System object 形式返回。sos 函数将输入 IIR 滤波器的分子系数和分母系数转换为 SOS 矩阵和定标值,并将这些值赋给 dsp.SOSFilter 对象。

版本历史记录

在 R2011a 中推出

全部展开

另请参阅

函数

对象