文章目录
- MATLAB/Simulink 通信原理及仿真学习(二)
- simulink仿真
- 常用的Simulink库
- 1. 信号源模块库
- 2. 数序运算模块
- 3. 信号输出模块库
- 4.仿真搭建
- 5.搭建自己的库
- 6.S-函数编写
MATLAB/Simulink 通信原理及仿真学习(二)
simulink仿真
-
交互式、图形化的建模环境
鼠标拖动不同模块库中的系统模块并将它们连接起来。 -
交互式的仿真环境
下拉菜单或通过命令行进行仿真,例如蒙特卡洛仿真。 -
专用模块库
DSP、Blockset和Communication Blocket等。更重要的是用户可以对系统模型进行代码生成,并将生成代码下载到不同的目标机上。 -
提供了仿真库的扩充和定制机制
可以扩展仿真环境功能,接入第三方开发提供的模块库进行更高级的系统仿真。 -
与MATLAB工具箱的集成
Simulink的有点:(1)基于矩阵的数值计算;(2)高级编程语言;(3)图形可视化;(4)工具箱提供面向具体应用领域的功能;(5)丰富的数据I/O工具;(6)提供与其他高级语言的接口;(7)支持多平台;(8)开放与可扩展的体系结构。
常用的Simulink库
1. 信号源模块库
- 输入端口模块(In1):用来反映整个系统的输入端子,设置在模型线性化与命令行仿真时是必须的。
- 常数输入模块(Constant):常数作为输入。
- 普通信号源发生器(Signal Generator):能够生成若干种常用信号,如:方波、正弦、锯齿波,允许用户自由地调整其幅值、相位及其他信号。
- 接地线模块(Ground):零输入模块,Simulink仿真中如果一个模块的输入端子没有接任何其他模块,接入此输入端子即可避免错误信息。
- 时间信号模块(Clock):生成当前仿真时钟, 在与时间有关的指标求取中很有意义的。
- 读文件模块(From File)和读工作空间模块(From Workspace):两个模块允许从文件或MATLAB工作空间中读取信号。
- 带宽限幅白噪声(Band-Limited White Noise):
- 其他类型信号输入:阶跃输入(Step)、斜坡输入(Ramp)、脉冲信号(Pulse Generator)、正弦信号(Sine Wave)等。
2. 数序运算模块
-
增益函数(Gain):输出信号等于输入信号乘以增益模块中的值。
-
求和函数(Sum):求输入的多路信号的和或差。
-
代数约束模块(Algebraic Constraint):约束输入信号,令其值为0.
-
复数的实部虚部提取模块(Complex to Real-Imag)、复数变换成幅值幅角的模块(Complex to Magnitude-Angle)及其反变换。
-
数学函数,绝对值(Abs),符号函数(Sign),三角函数(Trigonometric)、取整模块(Rounding Function)等。
-
数字逻辑模块,逻辑运算模块(Logic Operator)、组合逻辑模块(Combinational Logic),常用于逻辑电路搭建。
3. 信号输出模块库
- 输出端口模块(Out1):反映整个系统的输出端子,这样的设置在模型线性化与命令行仿真时是必须的。
- 示波器模块(Scope):将输入信号在示波器中显示出来(非常常用的模块)。
- x-y示波器(x-y Graph):将两路输入信号分别作为示波器的两个坐标轴,将信号的相轨迹显示出来。
- 工作空间写入模块(To Workspace):将输入信号直接写到MATLAB的工作空间中。该模块默认的写法是结构体型的数据, 可以通过设置将之设置成矩阵型的。
- 写文件模块(To File):将输入信号写到文件中。
- 数字显示模块(Display):将输入信号用数字的形式显示出来。
- 仿真定制模块(Stop Simulation):如果输入的信号为非零时,将强行终止正在进行的仿真过程。
- 信号终结模块(Terminator):可以将该模块连接到闲置的未连接的模块输出信号上,避免出现警告。
4.仿真搭建
- 模型选取后,可以鼠标左击起始模块,之后按住Ctrl座机目标块,系统会自动进行模块之间的连接。
- 按住Shift键后可以进行连接线的调整。
- 可以使用Signal Routing中的Mux模块,进行模块组合,将某些模块的输出信号(常为标量)组合为一个矢量信号,并将其作为另一个模块的输入。
- 注意在仿真时,如果仿真的时间段较大,这是系统默认的最大步长
s
t
e
p
=
t
e
n
d
−
t
b
e
g
i
n
50
step = \frac{t_{end}-t_{begin}}{50}
step=50tend−tbegin会比较大,这是需要去调整一下最大步长,即如下:
5.搭建自己的库
- 这里步骤很多特别繁琐,用到的时候看例子学习吧,有关于 Subsystem Examples 的例子,这里就简单记录一下步骤过程吧。
- 从Ports&Subsystem****模块中选取Subsystem**模块;
- 双击打开Subsystem模块进行像不应内容编辑;
- 进行模块封装。
6.S-函数编写
- S-函数时系统函数(System-functions)的简称,采用非图形化的方式描述一个功能块。
状态矢量 x \boldsymbol x x分成两部分,连续实际状态 x c ′ \boldsymbol x_{c}^{'} xc′和离散事件状态 x d + 1 \boldsymbol x_{d+1} xd+1。
- 涉及的概念知识有:(1)直接反馈:(2)可变长度输入;(3)采样时间和偏移。
可以去MATLAB安装路径下 \toolbox\simulink\blocks中查找S-函数模板sfuntmpl.m,运行时注意必须把simulink放置在S-函数文件所在的目录。