1. 理解MIMO系统与step()函数的基础特性
在控制系统的分析与设计中,阶跃响应是最常用的时域分析手段之一。MATLAB中的step()函数为我们提供了便捷的绘制工具,但当面对多输入多输出(MIMO)系统时,很多初学者会对默认生成的复杂图表感到困惑。我曾经接手过一个工业机器人控制项目,系统有6个输入通道和3个输出通道,第一次用step()函数时,屏幕上突然弹出18个子图的震撼场景至今难忘。
MIMO系统的状态空间模型通常表示为:
A = [-0.5 -0.8; 0.8 0];
B = [1 -1; 0 2];
C = [1.9 6.4];
sys = ss(A,B,C,0);
这个典型示例包含两个输入和一个输出,形成两个传输通道。当执行step(sys)时,MATLAB会自动生成并排的两个子图,分别显示从u1到y和从u2到y的阶跃响应。这种默认行为在简单系统下尚可接受,但在实际工程中,我们经常遇到数十个通道的复杂系统,这时就需要掌握精准控制输出显示的技巧。
step()函数在MIMO系统中的工作机制值得深入理解。它实际上返回两个矩阵:时间向量t和响应数据y。对于有p个输出、q个输入的系统,y的维度将是length(t)×p×q。这个三维结构是后续选择性绘制的关键。在我的实践中发现,很多用户没有意识到y(:,1,1)和y(:,:,1)的区别,这往往导致错误的可视化结果。
2. 提取指定输入通道响应的核心方法
要从复杂的MIMO响应中提取特定输入通道的数据,我们需要掌握几种核心索引技术。最直接的方法是使用step()的三输出形式:
[y,t,x] = step(sys);
plot(t,y(:,1,1)); % 第一个输出对第一个输入的响应
grid on; title('u1→y1响应');
这种方法虽然简单,但存在效率问题——它仍然计算了所有通道的响应。在处理大型系统时,我推荐使用输入参数指定法:


630

被折叠的 条评论
为什么被折叠?



