2026a
M 语言

# filt


指定离散传递函数的 DSP 格式

# 语法

sys = filt(num, den)
sys = filt(num, den, Ts)
sys = filt(M)

# 说明

在数字信号处理(DSP)中,通常将传递函数写成 的有理表达式,并按 升幂 排列分子和分母项。例如:

filt 函数用于方便地指定 DSP 格式的传递函数。

sys = filt(num, den) 创建一个离散时间传递函数 sys,其分子为 num,分母为 den。采样时间未指定(sys.Ts = -1),输出 sys 是一个 TF 对象。


sys = filt(num, den, Ts) 进一步指定采样时间 Ts(以秒为单位)。


sys = filt(M) 指定一个增益矩阵为 M 的静态滤波器。

前面的任何语法都可以跟随属性名/属性值对,形式如下:

PropertyName, PropertyValue

每对属性指定模型的特定属性,例如输入名称或传递函数变量。

# 参数

对于 SISO 传递函数,num 和 den 是按 升幂 排列的行向量,包含分子和分母系数。例如,den = [1 0.4 2] 表示多项式:

MIMO 传递函数被视为 SISO 传递函数的数组(每个 I/O 通道一个),每个传递函数都由其分子和分母表征。输入参数 num 和 den 是行向量的元胞数组,使得:

  • num 和 den 的行数与输出数相同,列数与输入数相同;

  • 其 (i, j) 条目 num{i, j} 和 den{i, j} 指定从输入 j 到输出 i 的传递函数的分子和分母。

如果所有 SISO 条目具有相同的分母,则也可以将 den 设置为该公共分母的行向量表示。

# 示例

DSP 形式的离散时间传递函数

创建默认采样时间(Ts=1)的离散传递函数:

clc; clear; 

num = [0 1 0.5];      % 分子系数
den = [1 -1.5 0.7]; % 分母系数

分子 num = [0 1 0.5],分母 den = [1 -1.5 0.7],表示系统:

sys = filt(num, den)
sys = 

   1.0z^-1 + 0.5z^-2
-----------------------
1.0 - 1.5z^-1 + 0.7z^-2

Delay: 0.0

Sample Time: -1 (seconds)
离散时间传递函数模型

创建自定义采样时间(Ts=0.1)的离散系统:

Ts = 0.1;
sys_ts = filt(num, den, Ts)
sys_ts = 

   1.0z^-1 + 0.5z^-2
-----------------------
1.0 - 1.5z^-1 + 0.7z^-2

Delay: 0.0

Sample Time: 0.1 (seconds)
离散时间传递函数模型

通过 bode 图对比不同采样时间对频率响应的影响。

% 对比频率响应
figure;
bode(sys, sys_ts);
legend('Ts=1', ['Ts=' num2str(Ts)]);
title('不同采样时间的Bode图对比');
grid on;

通过标量输入 M = 2.5 创建静态增益系统:

M = 2.5; % 静态增益值
sys_gain = filt(M)
sys_gain = 

2.5
---
1.0

Delay: 0.0

Sample Time: -1 (seconds)
离散时间传递函数模型

# 提示

filt 的行为类似于将 Variable 属性设置为 的 tf。

# 另请参阅

tf | zpk | ss