对 Simulink 模型进行仿真

您所在的位置:网站首页 小汤锅哪个牌子好 对 Simulink 模型进行仿真

对 Simulink 模型进行仿真

2024-04-30 17:23| 来源: 网络整理| 查看: 265

打开实时脚本

当您使用 Simulink.SimulationInput 对象数组来配置一组仿真时,只需调用一次 sim 函数即可使用快速重启运行一组仿真。快速重启通过在各次仿真运行之间保持模型编译来节省仿真时间。

打开模型 IntegrateSine。该模型使用 Integrator 模块对 Sine Wave 模块的输出进行积分。Integrator 模块的输出连接到 Outport 模块。

mdl = "IntegrateSine"; open_system(mdl)

假设您要运行一组(包含六个)仿真,每个仿真对 Sine Wave 模块使用不同频率值。创建一个包含各个仿真的频率值的向量。

freqs = [0.5 1 1.5 2 2.5 3];

当您要调节模块参数时,可以使用变量定义参数值。然后,通过更改变量值来调节模块参数。

定义变量 freq,将其用作 Sine Wave 模块的频率参数的值。对于初始变量值,可以使用当前参数值。

blk = mdl + "/Sine Wave"; freq = str2double(get_param(blk,"Frequency"));

将 Sine Wave 模块的 Frequency 参数值设置为 freq。

set_param(blk,"Frequency","freq")

在 for 循环中,创建一个包含六个 Simulink.SimulationInput 对象的数组,并使用 setVariable 函数来配置每个对象以使用频率向量中的值。

for k = length(freqs):-1:1 simIn(k) = Simulink.SimulationInput(mdl); simIn(k) = setVariable(simIn(k),"freq",freqs(k)); end

使用 sim 函数运行由 SimulationInput 对象 simIn 的数组定义的仿真。使用 UseFastRestart 名称-值参数启用快速重启。仅当第一个输入参数是 Simulink.SimulationInput 对象时,才支持 UseFastRestart 名称-值参数。要在第一个参数是模型名称时使用快速重启,请使用 FastRestart 名称-值参数。

out = sim(simIn,"UseFastRestart","on");[28-Feb-2023 11:45:06] Running simulations... [28-Feb-2023 11:45:11] Completed 1 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 2 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 3 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 4 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 5 of 6 simulation runs [28-Feb-2023 11:45:12] Completed 6 of 6 simulation runs

要运行同一组仿真而不显示进度消息,请将 ShowProgress 名称-值参数指定为 off。

out = sim(simIn,"UseFastRestart","on","ShowProgress","off");

要使用仿真管理器监控仿真的进度,请将 ShowSimulationManager 名称-值参数指定为 on。有关仿真管理器的详细信息,请参阅Simulation Manager。

out = sim(simIn,"UseFastRestart","on",... "ShowProgress","off","ShowSimulationManager","on");

仿真输出 out 是包含每个仿真的元数据和结果的 Simulink.SimulationOutput 对象数组。输出数组中 SimulationOutput 对象的顺序与输入数组中 SimulationInput 对象的顺序匹配。例如,索引 1 处的 SimulationOutput 对象包含使用索引 1 处的 SimulationInput 对象配置的仿真的结果。

访问第一次仿真结果记录的输出信号,第一次仿真使用的频率值为 0.5。

youtPt5 = out(1).youtyoutPt5 = Simulink.SimulationData.Dataset 'yout' with 1 element Name BlockPath ______ _____________________ 1 [1x1 Signal] output IntegrateSine/Outport - Use braces { } to access, modify, or add elements using index.


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3