用MATLABG画出(s)=k*(s+l)*(s+2)/(s+3)*(s+4)*(s+5)*(s+6) 要求控制出系統的闭环根軌渣, 并接制k=20和許40肘的系統鬧到:沖激吶座曲錢
时间: 2024-12-08 13:20:42 浏览: 11
matlab数组运算.txt
在MATLAB中,你可以使用`zpk`函数来创建传递函数模型,然后使用`step`或`bode`函数绘制系统的根轨迹以及对输入的阶跃响应。首先,你需要创建一个传递函数模型,给定的是多项式表达式:
```matlab
% 定义系统参数
k = 20; % 系统增益
l = 1; % 被积因子
% 创建传递函数模型
numerator = [k*l, 2*k];
denominator = [1, 3, 4, 5, 6];
sys = tf(numerator, denominator);
```
为了绘制根轨迹,可以使用`rlocus`函数:
```matlab
% 绘制根轨迹
figure;
rlocus(sys);
title('根轨迹图 (k = ' + num2str(k) + ')');
```
这将显示根轨迹,其中k值为20。
对于不同的k值,比如k = 40,你可以直接修改`sys`变量中的k值再绘制:
```matlab
k = 40; % 修改为新的k值
sys_new = tf([k*l, 2*k], [1, 3, 4, 5, 6]);
figure;
rlocus(sys_new);
title('根轨迹图 (k = ' + num2str(40) + ')');
```
至于阶跃响应,可以使用`impulse`函数结合`stepplot`:
```matlab
% 求阶跃响应
tspan = 0:0.01:10; % 时间范围
step_input = impulse;
response = step(sys, tspan);
% 绘制阶跃响应曲线
figure;
stepplot(tspan, response, 'Response', 'b');
title(['阶跃响应 (k = ', num2str(k), ')']);
xlabel('时间 (s)');
ylabel('响应');
```
如果你想要对比k=20和k=40的阶跃响应,可以在同一页图上添加两条曲线:
```matlab
% 对比两个k值的阶跃响应
response_20 = step(sys, tspan);
response_40 = step(sys_new, tspan);
figure;
hold on;
stepplot(tspan, response_20, 'Response', 'b', '-o', 'LineWidth', 1.5, 'DisplayName', 'k = 20');
stepplot(tspan, response_40, 'Response', 'g', '--', 'LineWidth', 1.5, 'DisplayName', 'k = 40');
legend('show');
hold off;
title('阶跃响应对比');
```
阅读全文