因为最近要开始用matlab画图了,所以重新学习一下已经忘的差不多的matlab,持续更新,把遇到的不熟悉的记录下来以便今后查阅
1. simulink中的仿真结果除了可以送到scope模块显示出来外,也可以送到to workspace模块保存到一个矩阵中方便后面的程序调用。
2.simuink中子系统的建立:
共有两种建立方法:
- 先建立子系统,在建立完整的系统,方法是在模块库中选择子模块图标
- 先建立完整的系统,然后选择要建立的子模块,然后ctrl+g
3.如果想要在一个显示器上同时显示多个信号,可以将着多个信号用mux模块拧在一起送到scope模块里
4.被控对象除了可以用传递函数表示外,还可以用状态方程的形式,如下图:
图中的状态状态方程是传递函数的另外一种形式,两者本质是一样的。
另外,在这张图中,我们将原始信号和输出信号存到了工作空间中去,是为了实现用工作空间中的数据去画图,而不用scope。
注意:通过simulink输入到工作空间中的数据不是简单的数组,而是一个结构体。该结构体的形式为:
从这个图中可以看出这不是单纯的矩阵,他里面有两个数据结构类型,一个为time,一个为data。所以如要用plot命令画图不能用plot(t,y(:,2)),而应该用plot(y.time,y.data,'r');
,因为这个结构体里面已经记录了时间,所以我们不用专门去定义时间这个量了,可以直接调用变量名.time
的形式。其实,如果不用变量名.time
的形式也可以,因为我们发现matlab自动省城了一个新的变量tout
,如下图:
而这个tout就是简单的矩阵,里面记录了所有时间节点。所以plot命令也可以写成:
plot(tout,yd.data,'r');
最后输出为: