sos
转换为二阶节
说明
示例
将 IIR 离散时间滤波器对象转换为包含对应 SOS 节的 SOS 滤波器对象。
使用 butter 函数设计一个 10 阶低通巴特沃斯滤波器。
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: [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 中推出dsp.BiquadFilter 对象和 UseLegacyBiquadFilter 标志将在以后的版本中删除。
dsp.BiquadFilter 对象和 UseLegacyBiquadFilter 标志将在以后的版本中删除。
sos 函数现在生成 dsp.SOSFilter 对象,而不是 dsp.BiquadFilter 对象。
初始化 dsp.IIRFilter 对象。使用 sos 函数将 IIR 滤波器对象转换为包含对应 SOS 节的双二阶滤波器。输出是 dsp.SOSFilter 滤波器对象。
iirFilt = dsp.IIRFilter convFilt = sos(iirFilt)
convFilt =
dsp.SOSFilter with properties:
Structure: 'Direct form II transposed'
CoefficientSource: 'Property'
Numerator: [1 1 0]
Denominator: [1 0.1000 0]
HasScaleValues: false
Show all properties
要设计 dsp.BiquadFilter 对象而非 dsp.SOSFilter 对象,您可以使用 UseLegacyBiquadFilter 标志并将其设置为 true。
convFilt = sos(iirFilt,UseLegacyBiquadFilter=true)
convFilt =
dsp.BiquadFilter with properties:
Structure: 'Direct form II transposed'
SOSMatrixSource: 'Property'
SOSMatrix: [1 1 0 1 0.1000 0]
ScaleValues: [2×1 double]
InitialConditions: 0
OptimizeUnityScaleValues: true
Show all properties
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)