Matlab仿真示例

1 创建简单模型

您可以使用 Simulink® 来对系统建模,然后仿真该系统的动态行为。本教程中创建简单模型所使用的基本方法也适用于创建更复杂的模型。此示例对简化的汽车运动进行仿真。当踩下油门踏板时,汽车通常处于行进状态。松开踏板后,汽车怠速并停下来。

Simulink 模块是定义模块输入和模块输出之间数学关系的模型元素。要创建这个简单模型,您需要四个 Simulink 模块。

模块名称    模块目的    模型目的
Pulse Generator    为模型生成输入信号    表示加速踏板
Gain    将输入信号乘以常量值    计算踩下加速踏板后如何影响汽车的加速度
Second-Order Integrator    将输入信号积分两次    根据加速度计算汽车位置
Outport    指定一个信号作为模型的输出    指定汽车位置做为模型的输出
A Simulink model with Pulse Generator, Gain, Second-Order Integrator block, and two Outport blocks.

此模型的仿真过程是将一个简短的脉冲信号积分两次,形成一个斜坡。结果显示在一个示波器窗口中。输入脉冲表示是否踩下油门踏板 - 1 表示踩下,0 表示未踩下。输出斜坡表示与起点之间的距离增加。

打开新模型
使用 Simulink 编辑器构建模型。

启动 MATLAB®。从 MATLAB 工具条中,点击 Simulink 。

The Simulink start page has two tabs, New and Examples, from which you can open a new template or an example.

点击空白模型模板。

Simulink 编辑器打开。

为了避免遮蔽,Simulink 编辑器检查路径中加载的模型和文件,并使用下一个可用名称 untitled、untitled1、untitled2 等创建一个模型。

Empty Simulink Editor

从仿真选项卡中,选择保存 > 另存为。在文件名文本框中,输入您的模型的名称。例如,simple_model。点击保存。模型使用文件扩展名 .slx 进行保存。

打开 Simulink库浏览器
Simulink 在 Library Browser 中提供了一系列按功能分类的模块库。下面是大多数工作流常用的一些模块库:

Continuous - 表示具有连续状态的系统的模块

Discrete - 表示具有离散状态的系统的模块

Math Operations - 实现代数和逻辑方程的模块

Sinks - 存储并显示所连接信号的模块

Sources - 生成模型的驱动信号值的模块

要打开库浏览器,请在 Simulink 工具条的仿真标签页上,点击库浏览器。

Library Browser

要浏览模块库,请在库树中展开一个类别,然后展开一个功能区。

要搜索所有可用的模块库,请输入搜索词。

例如,查找 Pulse Generator 模块。在搜索框中,输入 pulse,然后按 Enter 键。软件在库中搜索名称或描述中包含 pulse 的模块,然后在库浏览器的搜索结果标签页上显示这些模块。

提示

您可以通过点击库选项卡返回浏览库树。

The Simulink Library Browser displays the results for the search term pulse, which include Pulse Generator and Continuous Pulse Generator blocks.

获取模块的详细信息。在搜索结果选项卡上,右键点击 Pulse Generator 模块,然后选择 Pulse Generator 模块的帮助。帮助浏览器随即打开并显示该模块的参考页。

模块通常有几个参数。您可以通过双击该模块来访问所有模块参数。

将模块添加到模型
要开始构建模型,请向模型画布添加模块。您可以使用库浏览器或快速插入菜单添加模块。

首先从库浏览器添加一个 Pulse Generator 模块。

从 Sources 库中,将 Pulse Generator 模块拖到 Simulink 编辑器中。您的模型中将出现 Pulse Generator 模块的副本,还有一个文本框用于输入振幅参数的值。输入 1。

The Pulse Generator block with a value of 1 entered in the text box prompt to specify the Amplitude parameter.

参数值在整个仿真期间保持不变。

使用快速插入菜单添加一个 Gain 模块。

双击模型画布中的任意位置。在出现的快速插入菜单中,输入 out。将出现模块列表。对于列表中的每个模块,包含该模块的库的名称显示在模块名称下方。通过按 Enter 键选择存储在 Simulink 库中的 Out1 模块。

Quick insert menu with the keyword "out" displayed in the search text box

有关快速插入菜单的详细信息,请参阅Add Blocks to Models Using Quick Insert Menu。

使用库浏览器或快速插入菜单将这些模块添加到模型中。

模块    库    参数
Gain    Simulink/Math Operations    
增益: 2

Second-Order Integrator    Simulink/Continuous    
初始条件: 0

复制现有 Outport 模块,然后使用键盘快捷方式将其粘贴到另一个点,从而添加第二个 Outport 模块。

您的模型现在已经包含您需要的模块。

通过点击并拖动每个模块来排列模块。要调整模块大小,请拖动模块的一个角。

Arranged blocks from left to right.

连接模块
通过在输出端口和输入端口之间创建线条来连接模块。

点击 Pulse Generator 模块右侧的输出端口。

该输出端口和所有适合连接的输入端口由蓝色向前符号 port hint symbol 指示。

Five unconnected blocks include, from left to right, a Pulse Generator block, a Gain block, a Second Order Integrator block, and two Outport blocks. The output port of the Pulse Generator block and the input ports of the other blocks display blue chevron port hint symbols.

指向 port hint symbol 以查看连接提示。

A connection cue is displayed between the Pulse Generator block and the Gain block.

点击提示,用一个线条和一个指示信号流动方向的箭头连接这些模块。

An arrow represents the connection between the Pulse Generator block and the Gain block.

将 Gain block 的输出端口连接到 Second-Order Integrator 模块的输入端口。

将 Second-Order Integrator 模块的两个输出连接到两个 Outport 模块。

保存模型。在仿真选项卡中,点击保存。

All the blocks are connected.

添加信号查看器
要查看仿真结果,请将第一个输出连接到一个 Signal Viewer。

点击信号。在仿真选项卡中的准备下,点击添加查看器。选择 Scope。信号上会出现查看器图标,并打开一个示波器窗口。

A viewer icon appears on the signal between the Second-Order Integrator block and Outport block for output 1.

您可以随时通过双击该图标打开示波器。

运行仿真
指定仿真的停止时间。然后,对模型进行仿真。

在仿真选项卡上,设置仿真停止时间。在 Simulink 工具条的仿真选项卡上,在停止时间字段中输入值。

Simulation stop time is displayed on the Simulation tab of the toolstrip

默认停止时间 10.0 适合此模型。此时间值没有单位。Simulink 中的时间单位取决于方程的构造方式。此示例对简化的汽车运动进行 10 秒的仿真 - 其他模型的时间单位可以是毫秒或年。

要运行仿真,请点击运行 。

仿真开始运行并在波形查看器中生成输出。

A scope viewer shows the output of the simulation.

细化模型
更改模块参数
此示例使用现有模型 moving_car.slx,并基于此运动模型对接近传感器建模。

在这种情况下,数字传感器用于测量汽车与 10 米(30 英尺)外的障碍物之间的距离。模型基于下列条件来输出传感器的测量值和汽车的位置值:

汽车在到达障碍物时会紧急刹车。

在现实世界中,传感器对距离的测量不够精确,从而导致随机数值误差。

数字传感器以固定时间间隔运行。

要开始,请打开 moving_car 模型。在 MATLAB 命令行中,输入:

open_system('moving_car.slx');
您首先需要对在汽车位置到达 10 时的紧急刹车进行建模。Integrator, Second-Order 模块有用于此目的的参数。

双击 Integrator, Second-Order 模块。将出现“模块参数”对话框。

选择 x 限制,然后为 x 上限输入 10。参数的背景色发生变化以指示模型存在未应用的修改。点击确定应用更改并关闭对话框。

添加新模块和连接
添加一个用来测量与障碍物之间距离的传感器。

修改模型。根据需要展开模型窗口,以容纳新模块。

求实际距离。要想求出障碍物位置和车辆位置之间的距离,需要从 Math Operations 库中添加 Subtract 模块。还要从 Sources 库中添加 Constant 模块来为障碍物的位置设置常量值 10。

对真实传感器中常见的不完美测量进行建模。使用 Sources 库中的 Band-Limited White Noise 模块产生噪声。将噪声功率参数设置为 0.001。通过使用 Math Operations 库中的 Add 模块将噪声添加到测量中。

对每 0.1 秒触发一次的数字传感器进行建模。在 Simulink 中,以给定时间间隔对信号进行采样需要一个样本和保持器。从 Discrete 库中添加 Zero-Order Hold 模块。将该模块添加到模型后,将采样时间参数更改为 0.1。

添加另一个 Outport,用来连接传感器输出。保留端口号参数的默认值。

连接新模块。Second-Order Integrator 模块的输出已连接到另一个端口。要在该信号中创建分支,请左键点击该信号以突出显示可供连接的端口,然后点击适当的端口。

With the signal between the Second-Order Integrator block and the Outport block selected, the software suggests connecting the signal line to the minus input port of the Subtract block.

为信号添加注释
将信号名称添加到模型中。

双击信号并键入信号名称。

Highlighted signal is called pedal position

要完成输入,请点击文本框外部。

重复上述步骤以添加下图中所示的名称。

Model with named signals. The signal between Pulse Generator block and the gain block is called pedal position. The signal between the Gain block and the Integrator, Second-Order block is called acceleration. The signal between two Subtract blocks is called actual distance. The signal between the Zero-Order Hold block and the Outport block is called measured distance.

比较多个信号
将 actual distance 信号与 measured distance 信号进行比较。

创建 Scope Viewer 并将其连接到 actual distance 信号。右键点击信号并选择创建并连接查看器 > Simulink > Scope。信号的名称显示在查看器标题中。

将 measured distance 信号添加到同一个查看器中。右键点击信号,然后选择连接到查看器 > Scope1。确保您连接到在上一步中创建的查看器。

Window after right clicking a signal. Scope 1 is selected.

对模型进行仿真。波形查看器显示两个信号:actual distance(黄色)和 measured distance(蓝色)。

The scope viewer shows the actual distance and the measured distance values.

放大图形以观察噪声和采样的影响。点击缩放 。左键点击并拖动鼠标框住您想放大查看的区域。

A rectangular box in the scope viewer window shows the region selected to zoom.

您可以根据需要重复此操作来观察细节。

The zoomed region in the scope viewer

该图显示,测量值可偏离实际值达 0.3 米之多。这些信息在设计安全功能(如碰撞预警)时非常有用。
========

2 MATLAB控制系统仿真

SIMULINK仿真设置及实例


2.SIMULINK仿真设置及实例
2.1 SIMULINK功能模块的处理
2.1.1 SIMULINK功能模块参数设置

2.1.2 SIMULINK模块基本操作
在模型窗口中,选中模块,四角出现黑色标记,对模块可以进行如下操作:

移动:选中模块,按住鼠标左键将其拖曳到想放置的位置即可;要脱离线移动,按住S h i f t {\rm Shift}Shift键进行拖曳;
复制:选中模块,按住鼠标右键进行拖曳即可复制一个同样的功能模块;
删除:选中模块,按D e l e t e {\rm Delete}Delete键即可;若删除多个模块,同时按住S h i f t {\rm Shift}Shift键,用鼠标选中多个模块,按D e l e t e {\rm Delete}Delete键即可;亦可用鼠标选取某区域,按D e l e t e {\rm Delete}Delete键即可把该区域的所有模块和线等全部删除;
转向:右键模块,即可看到F l i p & R o t a t e {\rm Flip\&Rotate}Flip&Rotate选项;
改变大小:选中模块,对模块出现的4 44个黑色标记进行拖曳即可;
模块命名:在模块上的"…“展开点击”S h o w   B l o c k   N a m e {\rm Show\ Block\ Name}Show Block Name",把模块名显示后,点击模块名即可进行修改;
颜色设定:右键模块,选中"F o r m a t {\rm Format}Format“选项卡即可看到”F o r e g r o u n d   C o l o r {\rm Foreground\ Color}Foreground Color“前景颜色,”B a c k g r o u n d   C o l o r {\rm Background\ Color}Background Color"背景颜色;
参数设定:鼠标双击模块即可进行参数设置;
属性设定:选中模块,选中"P r o p e r t i e s {\rm Properties}Properties"选项卡,点击进入属性设定界面,包括D e s c r i p t i o n 、 P r i o r i t y 、 T a g {\rm Description、Priority、Tag}Description、Priority、Tag等属性的设定;
2.2 SIMULINK仿真设置
2.2.1 仿真器参数设置
"c t r l + E {\rm ctrl+E}ctrl+E"打开仿真器参数设置界面:

仿真时间( S i m u l a t i o n   t i m e ) ({\rm Simulation\ time})(Simulation time)

计算机仿真对时间的表示,10 s {\rm 10s}10s的仿真时间,如果采样步长为0.1 {\rm 0.1}0.1,则需要执行100 100100步,如果把步长减小,则采样点数增加,实际执行的时间会增加;

需要设置仿真开始时间( S t a r t   t i m e ) ({\rm Start\ time})(Start time)和仿真结束时间( S t o p   t i m e ) ({\rm Stop\ time})(Stop time),仿真开始时间一般设置为0 00,结束时间视情况而定;

仿真步长模式( T y p e ) ({\rm Type})(Type)

仿真步长模式可选:V a r i a b l e − s t e p {\rm Variable-step}Variable−step(变步长)模式和F i x e d − s t e p {\rm Fixed-step}Fixed−step(固定步长)模式;

变步长模式在仿真过程中改变可以改变步长,提供误差控制和过零检测选择;固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测;

解法器( S o l v e r ) ({\rm Solver})(Solver)

变步长模式的解法器:

d i s c r e t e {\rm discrete}discrete:当S I M U L I N K {\rm SIMULINK}SIMULINK检查到模型没有连续状态时使用它;
o d e 45 {\rm ode45}ode45:默认值,四/五阶龙格-库塔法,适用于大多数连续或离散系统,不适用于刚性系统;是单步解法器,即在计算y ( t n ) y(t_n)y(t 
n
​    
 )时,仅需要最近处理时刻的结果y ( t n − 1 ) y(t_{n-1})y(t 
n−1
 );
o d e 23 {\rm ode23}ode23:二/三阶龙格-库塔法,在误差限要求不高和求解的问题不太难的情况下,可能比o d e 45 {\rm ode45}ode45更有效,是一个单步解法器;
o d e 113 {\rm ode113}ode113:一种阶数可变的解法器,在误差容许要求严格的情况下通常比o d e 45 {\rm ode45}ode45有效;o d e 113 {\rm ode113}ode113是一种多步解法器,即在计算当前时刻输出时,需要以前多个时刻的解;
o d e 15 s {\rm ode15s}ode15s:一种基于数字微分公式的解法器,是一种多步解法器,适用于刚性系统;
o d e 23 s {\rm ode23s}ode23s:一种单步解法器,专门用于刚性系统,在弱误差允许下的效果优于o d e 15 s {\rm ode15s}ode15s,能解决某些o d e 15 s {\rm ode15s}ode15s不能有效解决的s t i f f {\rm stiff}stiff问题;
o d e 23 t {\rm ode23t}ode23t:表示梯形规则的一种自由插值实现,适用于求解适度s t i f f {\rm stiff}stiff而用户又需要一个无数字振荡的解法器的情况;
o d e 23 t b {\rm ode23tb}ode23tb:表示T R − B D F 2 {\rm TR-BDF2}TR−BDF2的一种实现,T R − B D F 2 {\rm TR-BDF2}TR−BDF2是具有两个阶段的隐式龙格-库塔公式;
固定步长模式的解法器:

d i s c r e t e {\rm discrete}discrete:一种实现积分的固定步长解法器,适用于离散无连续状态的系统;
o d e 5 {\rm ode5}ode5:默认值,适用于大多数连续或离散系统,不适用于刚性系统;
o d e 4 {\rm ode4}ode4:四阶龙格-库塔法,具有一定的计算精度;
o d e 3 {\rm ode3}ode3:固定步长的二/三阶龙格-库塔法;
o d e 2 {\rm ode2}ode2:改进的欧拉法;
o d e 1 {\rm ode1}ode1:欧拉法;
o d e 14 x {\rm ode14x}ode14x:固定步长的隐式外推法;
变步长模式的步长参数设置

M a x   s t e p   s i z e {\rm Max\ step\ size}Max step size(最大步长参数):决定解法器能够使用的最大时间步长,默认值为"仿真时间/50 5050",即整个仿真过程至少取50 5050个取样点;一般建议对于仿真时间不超过15 s {\rm 15s}15s的采用默认值即可,对于超过15 s {\rm 15s}15s的每秒至少保证5 55个采样点,对于超过100 s {\rm 100s}100s的,每秒至少保证3 33个采样点;
M i n   s t e p   s i z e {\rm Min\ step\ size}Min step size(最小步长参数):规定变步长仿真时使用的最小步长;
R e l a t i v e   t o l e r a n c e {\rm Relative\ tolerance}Relative tolerance(相对误差):指误差相对于状态的值,是一个百分比,默认值为:1 e − 3 {\rm 1e-3}1e−3,表示状态的计算值要精确到0.1 % 0.1\%0.1%;
A b s o l u t e   t o l e r a n c e {\rm Absolute\ tolerance}Absolute tolerance(绝对误差):指误差值的门限,或在状态值为零的情况下可以接收的误差;如果设置为a u t o {\rm auto}auto,则S I M U L I N K {\rm SIMULINK}SIMULINK为每一个状态设置初始绝对误差为1 e − 6 {\rm 1e-6}1e−6;
I n i t i a l   s t e p   s i z e {\rm Initial\ step\ size}Initial step size(初始步长参数):一般使用a u t o {\rm auto}auto默认值;
Z e r o   c r o s s i n g   c o n t r o l {\rm Zero\ crossing\ control}Zero crossing control:过零点控制,用来检查仿真系统的非连续;
固定步长模式的步长参数设置

M u l t i t a s k i n g {\rm Multitasking}Multitasking:当S I M U L I N K {\rm SIMULINK}SIMULINK检测到模块间非法的采样速率转换时系统会给出错误提示;非法采样速率转换即两个工作在不同采样速率的模块间的直接相连;
S i n g l e t a s k i n g {\rm Singletasking}Singletasking:此模式下不检查模块间的速率转换,在这种系统不存在任务同步问题;
A u t o {\rm Auto}Auto:此模式下,S I M U L I N K {\rm SIMULINK}SIMULINK根据模型中模块的采样速率是否一致,自动决定切换到M u l t i t a s k i n g {\rm Multitasking}Multitasking模式或S i n g l e t a s k i n g {\rm Singletasking}Singletasking模式;
2.2.2 工作空间数据导入/导出设置

L o a d   f r o m   w o r k s p a c e {\rm Load\ from\ workspace}Load from workspace
I n p u t {\rm Input}Input:从M A T L A B {\rm MATLAB}MATLAB工作空间获取时间和输入变量,时间默认:t tt,输入变量默认:u uu;
I n i t i a l   s t a t e {\rm Initial\ state}Initial state:从M A T L A B {\rm MATLAB}MATLAB工作空间获得的状态初始值的变量名;
S I M U L I N K {\rm SIMULINK}SIMULINK通过设置模型的输入端口,实现在仿真过程中从工作空间读入数据,常用的输入端口模块为信号与系统模块库( S i g n a l s & S y s t e m s ) ({\rm Signals\&Systems})(Signals&Systems)中的I n 1 {\rm In1}In1模块,设置参数时,选中I n p u t {\rm Input}Input前的复选框,在后面的编辑框键入数据的变量名,并可以用命令行窗口或M {\rm M}M文件编辑器输入数据;
S a v e   t o   w o r k s p a c e {\rm Save\ to\ workspace}Save to workspace
用来设置存在M A T L A B {\rm MATLAB}MATLAB工作空间的变量类型和变量名,选中选项前面的复选框并在选项后面的编辑框输入变量名,即可吧相应数据保存到指定的变量中;
常用的输出模块为信号与系统模块库( S i g n a l s & S y s t e m s ) ({\rm Signals\&Systems})(Signals&Systems)中的O u t 1 {\rm Out1}Out1模块和输出方式库( S i n k ) {({\rm Sink})}(Sink)中的T o   W o r k s p a c e {\rm To\ Workspace}To Workspace模块;
S a v e   o p t i o n s {\rm Save\ options}Save options
用来设置设置存往工作空间的有关选项;
L i m i t   d a t e   p o i n t s   t o   l a s t {\rm Limit\ date\ points\ to\ last}Limit date points to last:用来设定S I M U L I N K {\rm SIMULINK}SIMULINK仿真结果最终可存往M A T L A B {\rm MATLAB}MATLAB工作空间的变量的规模,对于向量而言即其维数,对于矩阵而言即其秩;
D e c i m a t i o n {\rm Decimation}Decimation:设定了一个亚采样因子,默认值为1 11,即对每一个仿真时间点产生值都保存,若为2 22则是每隔一个仿真时刻保存一个值;
2.3 SIMULINK仿真实例
2.3.1 实验1
实验要求:使用S I M U L I N K {\rm SIMULINK}SIMULINK求解微分方程d u d t = cos ⁡ ( sin ⁡ t ) , u ( 0 ) = 1 \displaystyle\frac{{\rm d}u}{{\rm d}t}=\cos(\sin{t}),u(0)=1 
dt
du
 =cos(sint),u(0)=1。

解:

# 实验步骤:
# 1.所需模块:正弦信号、余弦函数、积分模块、观测结果模块;

# 2.各模块所在位置
# 2.1 正弦信号:Sources模块组中Sine Wave模块;
# 2.2 余弦函数:Math Operations模块组中Trigonometric Function模块,双击该模块选择余弦函数;
# 2.3 积分模块:Continuous模块组中Integrator模块;
# 2.4 显示模块:Sinks模块组中Scope模块(示波器模块);

# 3.把各模块拖曳到仿真窗口,并连接起来;

# 4.点击"run",然后双击Scope(示波器)显示结果;

2.3.2 实验2
实验要求:产生一个5 sin ⁡ ( 2 t ) {5\sin(2t)}5sin(2t)和sin ⁡ ( 5 t ) \sin(5t)sin(5t)叠加的信号,另外叠加一个功率谱为0.5 0.50.5的限带宽白噪声;

解:

# 实验步骤:
# 1.所需模块:正弦信号、限带宽白噪声、加法模块、观测结果模块;

# 2.各模块所在位置
# 2.1 正弦信号:Sources模块组中Signal Generator模块,双击模块设置正弦信号参数;
# 2.2 限带宽白噪声:Sources模块组中Band-Limited White Noise模块,双击设置Noise power为0.5;
# 2.3 加法模块:Math Operations模块组中Add模块,双击将"List of Signs"的"++"改为"+++";
# 2.4 示波器模块:Sinks模块组中Scope模块;

# 3.把各模块拖曳到仿真窗口,并连接起来;

# 4.点击"run",然后双击Scope(示波器)显示结果;

2.3.3 实验3
实验要求:已知单位负反馈二阶系统的开环传递函数为:G ( s ) = 10 s 2 + 3 s G(s)=\displaystyle\frac{10}{s^2+3s}G(s)= 

2
 +3s
10
​    
 ,使用S I M U L I N K {\rm SIMULINK}SIMULINK求解其单位阶跃响应。

解:

# 实验步骤:
# 1.所需模块:阶跃信号、相加器、传递函数、示波器;

# 2.各模块所在位置
# 2.1 阶跃信号:Sources模块组中Step模块;
# 2.2 相加器:Math Operations模块组中Sum模块;
# 2.3 传递函数:Continuous模块组中Transfer Fcn模块;
# 2.4 示波器模块:Sinks模块组中Scope模块;

# 3.把各模块拖曳到仿真窗口,并连接起来;

# 4.点击"run",然后双击Scope(示波器)显示结果;

2.3.4 实验4
实验要求:某控制系统的传递函数为:Y ( s ) X ( s ) = G ( s ) 1 + G ( s ) \displaystyle\frac{Y(s)}{X(s)}=\displaystyle\frac{G(s)}{1+G(s)} 
X(s)
Y(s)
 = 
1+G(s)
G(s)
​    
 ,其中:G ( s ) = s + 50 2 s 2 + 3 s G(s)=\displaystyle\frac{s+50}{2s^2+3s}G(s)= 
2s 
2
 +3s
s+50
​    
 ,用S I M U L I N K {\rm SIMULINK}SIMULINK求解其阶跃输出响应,并将响应曲线导入到M A T L A B {\rm MATLAB}MATLAB工作空间,在工作空间中绘制响应曲线。

解:

# 实验步骤:
# 1.所需模块:阶跃信号、传递函数、加法模块、数据导出模块、结果观测模块;

# 2.各模块所在位置
# 2.1 阶跃信号:Sources模块组中Step模块;
# 2.2 传递函数:Continuous模块组中Transfer Fcn模块;
# 2.3 加法模块:Math Operations模块组中Sum模块;
# 2.4 示波器模块:Sinks模块组中Scope模块;
# 2.5 数据导出模块:Sinks模块组中To Workspace模块,导出数据命令:y,save format设为array;

# 3.把各模块拖曳到仿真窗口,并连接起来;

# 4.点击"run",然后双击Scope(示波器)显示结果;                        
========


3 matlab仿真参数设置


在MATLAB中,仿真参数设置通常涉及创建一个结构体或者字典来保存这些参数。以下是一个简单的例子,展示了如何设置和使用仿真参数:

% 定义仿真参数
params = struct('frequency', 50, 'amplitude', 1, 'duration', 0.1);
 
% 使用仿真参数
t = 0:0.001:params.duration; % 时间向量
signal = params.amplitude * sin(2 * pi * params.frequency * t); % 生成正弦波信号
 
% 绘制信号
plot(t, signal);
title('Simulation Signal');
xlabel('Time (s)');
ylabel('Amplitude');
在这个例子中,我们首先创建了一个名为params的结构体,其中包含了仿真所需的参数:频率、振幅和持续时间。然后我们使用这些参数生成了一个正弦波信号,并绘制出来。这个过程可以根据你的具体需求进行调整,以设置不同的仿真参数。
========

4 matlab简单电路仿真


由于您没有提供具体的仿真建模需求,我将提供一个简单的MATLAB代码示例,该示例使用MATLAB的Simulink仿真工具箱来建模并仿真一个简单的电路。

假设我们有一个电阻和一个电容串联的电路,我们想要分析这个电路在不同频率下的响应。

打开Simulink。

创建一个新模型。

从库中添加电阻(Resistor)和电容(Capacitor)模块到模型中。

连接电路,电阻的一端连接到电源,另一端连接到电容,电容的另一端连接到地(Ground)。

设置电阻和电容的参数。

运行仿真并观察结果。

以下是MATLAB命令行的代码示例,用于创建和运行上述Simulink模型:

% 创建新的Simulink模型
model = new_system('SimpleCircuit');
 
% 添加子系统块
resistor = add_block(model, 'Resistor');
capacitor = add_block(model, 'Capacitor');
 
% 设置电阻和电容参数
set_param(resistor, 'Resistance', 10);
set_param(capacitor, 'Capacitance', 1e-6);
 
% 连接电路
connect(model, [resistor, 1], [capacitor, 1]);
connect(model, [capacitor, 2], [resistor, 2]);
 
% 设置仿真参数
set_param(model, 'Solver', 'Default');
set_param(model, 'Solver', 'SolverType', 'State-Space');
set_param(model, 'Solver', 'StateSpaceZero', 'Continuous');
 
% 定义频率数组
freq = logspace(1, 5, 100); % 从1Hz到1000Hz的对数间隔
 
% 修改电容参数以改变电路行为
for c = 1:length(freq)
    set_param(capacitor, 'Capacitance', freq(c) * 1e-6);
    [~, ~, t, x] = lsim(model, 1:1000, 0); % 运行仿真1000个周期
    figure; plot(t, x); title(sprintf('Frequency: %g Hz', freq(c)));
    xlabel('Time (s)'); ylabel('Voltage (V)');
    drawnow; % 实时更新图形
end
这段代码首先创建了一个名为'SimpleCircuit'的新模型,并添加了电阻和电容模块。电路被设置为一个简单的串联电路,然后设置电阻和电容的参数。接下来,代码设置仿真参数并运行仿真。最后,代码循环通过不同的频率,更新电容的参数,并绘制电路的响应图。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值