MATLAB已知传函如何利用residue函数求单位脉冲及单位阶跃响应
时间: 2024-09-08 15:01:55 浏览: 89
在MATLAB中,`residue` 函数通常用来将传函(传递函数)从多项式形式转换为部分分式的形式。部分分式形式的传函便于分析系统的时域响应,包括单位脉冲响应和单位阶跃响应。
要使用 `residue` 函数求单位脉冲响应和单位阶跃响应,你可以按照以下步骤进行:
1. **获取部分分式展开系数:** 首先使用 `residue` 函数得到传函的部分分式展开系数,这将包括极点、留数和直接项。
2. **计算单位脉冲响应:** 单位脉冲响应可以通过将传函的分母多项式替换为单位脉冲函数,然后用得到的部分分式系数计算。单位脉冲函数在数学上表示为冲激函数 $\delta(t)$,其拉普拉斯变换为1。
3. **计算单位阶跃响应:** 单位阶跃响应可以通过将传函的分母多项式替换为单位阶跃函数,然后用得到的部分分式系数计算。单位阶跃函数在数学上表示为 $\mathcal{U}(t)$,其拉普拉斯变换为 $\frac{1}{s}$。
以下是具体的MATLAB代码示例:
```matlab
% 定义传函的分子和分母多项式系数
numerator = [1]; % 分子多项式系数,例如 s+1 可表示为 [1 1]
denominator = [1 3 2]; % 分母多项式系数,例如 s^2+3s+2 可表示为 [1 3 2]
% 使用 residue 函数进行部分分式展开
[r, p, k] = residue(numerator, denominator);
% 计算单位脉冲响应
t = 0:0.01:10; % 定义时间向量
impulse_response = zeros(size(t)); % 初始化脉冲响应数组
for i = 1:length(r)
impulse_response = impulse_response + r(i) * exp(p(i) * t);
end
% 计算单位阶跃响应
step_response = zeros(size(t)); % 初始化阶跃响应数组
for i = 1:length(r)
step_response = step_response + r(i) * (1 - exp(p(i) * t)) / p(i);
end
% 绘制单位脉冲响应和单位阶跃响应
figure;
subplot(2,1,1);
plot(t, impulse_response);
title('单位脉冲响应');
xlabel('时间');
ylabel('响应');
subplot(2,1,2);
plot(t, step_response);
title('单位阶跃响应');
xlabel('时间');
ylabel('响应');
```
这段代码首先定义了传函的分子和分母,然后使用 `residue` 函数得到部分分式展开结果。接着,通过循环计算每个部分分式的单位脉冲响应和单位阶跃响应,并将结果绘制出来。
阅读全文