已知单位负反馈系统,其开环传递函数为G(s)=(2s+1)/(s^2+3s+5),系统输入信号r(t)=sin(t),,利用MATLAB编写程序绘制系统的输出响应曲线。
时间: 2024-12-11 17:28:41 浏览: 18
已知的单位负反馈系统是一个典型的一阶加二阶系统,开环传递函数为 G(s) = (2s + 1) / (s^2 + 3s + 5)。给定的系统输入信号 r(t) = sin(t) 是一个正弦信号。为了在 MATLAB 中绘制输出响应曲线,你可以按照以下步骤操作:
1. 首先,你需要确认 s-domain 的表达式是否已经在 MATLAB 中进行了转换,因为 MATLAB 更习惯于处理 Zeros-Poles-Gain (ZPK) 或 Transfer Function Matrix (TFM) 形式的系统。
2. 如果 G(s) 是在 z-transform 或状态空间形式下表示的,需要将其转换成 TF 形式。如果已经存在,则直接可以使用 `tf` 函数创建 TF 对象。
```matlab
% 假设你已经有了开环传递函数的 TF 对象 G
G = tf([2 1], [1 3 5]);
```
3. 接下来,计算闭环系统 H(s) = G * 1 / (1 + G),这里假设反馈系数为1(单位负反馈):
```matlab
H = feedback(G, -1);
```
4. 定义时间范围和采样频率,例如 Ts = 0.01 秒:
```matlab
Ts = 0.01;
t = 0:Ts:10; % 从0到10秒的时间点,可根据需求调整
```
5. 计算离散化后的闭环系统,如果系统是模拟的,使用 `c2d`;如果是数字系统,可以跳过这步:
```matlab
if iscontinuous(H)
Hd = c2d(H, Ts, 'zoh'); % Zero Order Hold 折叠积分
else
Hd = H;
end
```
6. 现在可以计算系统响应了:
```matlab
y = lsim(Hd, u, t); % u 是系统的输入信号向量,这里填 r(t) = sin(t)
u = simfun('sin', t); % 创建一个周期为2π的信号,注意 MATLAB 的函数名可能略有差异
```
7. 最后,绘制系统输出响应曲线:
```matlab
plot(t, y)
xlabel('Time (s)')
ylabel('Output (Y(t))')
title('System Output Response for Input Sin(t)')
grid on
```
阅读全文