matlab tf函数怎么用(MATLAB tf函数用法)


MATLAB中的tf函数是控制系统工具箱的核心函数之一,用于创建连续或离散时间的传递函数模型。该函数通过分子分母多项式系数直接构建传递函数,支持多种输入形式(如向量、字符串或现有模型),并可自动处理时间延迟、多输入多输出(MIMO)系统等复杂场景。其输出结果可作为其他控制分析函数(如step、bode、feedback)的输入,广泛应用于稳定性分析、频域响应计算及控制器设计。在实际工程中,tf函数既能处理单变量线性系统,也可通过矩阵扩展实现多变量系统建模,同时兼容符号运算与数值计算,是连接理论模型与实际应用的重要桥梁。
1. 基本语法与输入形式
tf函数的核心语法为sys = tf(num, den)
,其中num和den分别表示分子和分母多项式系数向量。例如,传递函数$frac2s+3s^2+5s+6$可表示为:
num = [2 3]; denom = [1 5 6]; sys = tf(num, denom);
输入形式支持以下扩展:
输入类型 | 示例 | 适用场景 |
---|---|---|
向量形式 | tf([2 3], [1 5 6]) | 标准多项式系数输入 |
字符串形式 | tf('2s+3', 's^2+5s+6') | 直观表达式输入 |
现有模型转换 | sys = tf(zpk(...)) | 零极点模型转传递函数 |
2. 时间延迟与采样时间处理
对于含时间延迟的系统,tf函数通过第三个输入参数设置延迟时间。例如tf(num, den, 'InputDelay', τ)
表示输入延迟,而tf(num, den, Ts)
则定义离散时间系统(Ts为采样周期)。下表对比不同时间参数的处理方式:
参数类型 | 语法示例 | 数学表达 |
---|---|---|
输入延迟 | tf([1],[1 2],'InputDelay',0.5) | $G(s)e^-0.5s$ |
输出延迟 | tf([1],[1 2],'OutputDelay',1) | $G(s)e^-s$ |
IO延迟组合 | tf([1],[1 2],'IODelay',[0.3 0.7]) | $G(s)e^-0.3s cdot e^-0.7s$ |
3. 多输入多输出系统建模
MIMO系统的传递函数需通过元胞数组输入。例如双输入双输出系统:
num = [1 2], [3 4; den = [1 5 6], [1 3 2;
sys = tf(num, den);
此时sys.numi,j
表示第i个输入到第j个输出的分子系数。对比SISO与MIMO的关键差异:
特性 | SISO | MIMO |
---|---|---|
输入数据结构 | 向量 | 元胞数组 |
维度属性 | 单通道 | 多维阵列 |
典型应用 | 单回路控制 | 解耦控制 |
4. 离散时间系统建模
离散系统需指定采样时间Ts,语法为tf(num, den, Ts)
。当Ts=0时退化为连续系统。对比连续/离散系统的特性差异:
属性 | 连续系统 | 离散系统 |
---|---|---|
时间变量 | s(拉普拉斯域) | z(Z变换域) |
频率响应 | ω∈[0,∞) | θ∈[-π,π] |
稳定性判据 | 极点实部<0 | 极点模长<1 |
5. 高级参数配置
tf函数支持通过名称-值对设置附加属性,常用参数包括:
'Variable'
:定义符号变量(如's'或'z')'TimeUnit'
:设置时间单位(秒、毫秒等)'InputName'/'OutputName'
:指定输入输出通道名称'StateName'
:自定义状态变量名(需配合ss函数)
例如tf(num, den, 'Variable', 'z^-1')
可将传递函数转换为后移算子形式。
6. 与其他函数的协同应用
tf函数常与以下函数配合使用:
函数组 | 功能描述 | 数据流向 |
---|---|---|
ss/zpk | 模型形式转换 | tf → ss/zpk → tf |
feedback/series/parallel | 系统连接 | tf → 组合运算 → tf |
bode/step/margin | 分析工具 | tf → 分析结果 |
例如闭环系统分析的典型流程为:
G = tf(...); C = pid(...); cl_sys = feedback(GC, 1); bode(cl_sys);
7. 异常处理与常见错误
使用tf函数时需注意:
- 维度匹配:分子分母系数向量长度需满足$length(num) leq length(den)$
典型错误示例:
% 错误:分子阶次高于分母
tf([1 2 3], [1 2]);
% 正确:补零使分母阶次等于分子
tf([1 2 3], [1 2 0]);
以直流电机速度控制系统为例,其开环传递函数为:
$G(s) = frac10s(0.1s+1)(0.01s+1)$MATLAB实现代码及分析流程:
% 定义基础环节
G1 = tf(1, [1 0]); % 积分环节
G2 = tf(1, [0.1 1]); % 一阶惯性
G3 = tf(1, [0.01 1]); % 小时间常数环节
% 串联连接
G_open = series(G1, G2, G3);
% 添加比例增益
Kp = 5; G_total = Kp G_open;
% 绘制奈奎斯特曲线
nyquist(G_total);
通过tf函数构建各个环节并逐步组合,最终完成系统分析。此过程体现了tf函数在复杂系统建模中的灵活性和扩展性。
通过上述多维度分析可见,tf函数不仅是传递函数建模的基础工具,更是连接控制系统理论分析与工程实践的核心纽带。其丰富的输入选项、强大的参数配置能力以及与其他函数的无缝衔接,使其能够适应从简单教学示例到复杂工业控制系统的开发需求。深入掌握tf函数的使用技巧,可显著提升控制系统数字化设计的效率与可靠性。





