子图和控制系统响应曲线怎么结合?
一般问题
发布于 2025-01-01 12:16:39
查看 21过去544天
Typlot 中 subplot 和 TyControlSystems.step/impluse 等结合异常
现在的问题是运行后所有图都挤到第一个子图中

源码如下
using TyControlSystems:TyControlSystems, tf, feedback, step, impulse
using TyPlot
# 定义初始参数
T0_values = [10, 1, 0.1, 0.01]
num = [3.1, 230]
G0 = tf([1], [1]) # 单位负反馈
# 创建一个数组来存储所有系统
sys = Array{TyControlSystems.TransferFunction}(undef, length(T0_values), 1)
# 所有系统
for (i, T0) in enumerate(T0_values)
den = T0 * [1, 44.7, 502, 0]
G = tf(num, den)
sys[i, 1] = feedback(G, G0)
end
# 创建一个2行1列的图形窗口
figure(figsize=(10, 10))
# 子图1:阶跃响应
subplot(2, 1, 1)
hold(true)
step(sys[:]..., label=["T0 = $T0" for T0 in T0_values])
title("Step Response for Different T0 Values")
xlabel("Time (s)")
ylabel("Response")
legend()
hold(false)
# 子图2:脉冲响应
subplot(2, 1, 2)
hold(true)
impulse(sys[:]..., label=["T0 = $T0" for T0 in T0_values])
title("Impulse Response for Different T0 Values")
xlabel("Time (s)")
ylabel("Response")
legend()
hold(false)
# 调整子图之间的间距
tightlayout()
手动实现:从 TyControlSystems 中获取数据再用 TyPlot.subplot 绘图
效果如下

修改后代码如下
using TyControlSystems:TyControlSystems, tf, feedback, step, impulse
using TyPlot
# 定义初始参数
T0_values = [10, 1, 0.1, 0.01]
num = [3.1, 230]
G0 = tf([1], [1]) # 单位负反馈
# 创建一个数组来存储所有系统
sys = Array{TyControlSystems.TransferFunction}(undef, length(T0_values), 1)
# 所有系统
for (i, T0) in enumerate(T0_values)
den = T0 * [1, 44.7, 502, 0]
G = tf(num, den)
sys[i, 1] = feedback(G, G0)
end
# 总画布大小
figure(figsize=(10, 10))
# 子图1:阶跃响应
subplot(2, 1, 1)
hold("on")
for (i, T0) in enumerate(T0_values)
y, t = TyControlSystems.step(sys[i, 1]; fig=false)
plot(t, y, label="T0 = $T0")
end
title("Step Response for Different T0 Values")
xlabel("Time (s)")
ylabel("Response")
legend()
xlim(0, 100)
# 子图2:脉冲响应
subplot(2, 1, 2)
hold("on")
for (i, T0) in enumerate(T0_values)
y, t = TyControlSystems.impulse(sys[i, 1]; fig=false)
plot(t, y, label="T0 = $T0")
end
title("Impulse Response for Different T0 Values")
xlabel("Time (s)")
ylabel("Response")
legend()
xlim(0, 5)
# 调整子图之间的间距
tightlayout()
所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境