求解算法的分支¶
本示例演示了如何使用多端口切换模块来实现从模型的多个分支中选择一个的机制。该模块允许根据指定的模式在不同的求解选项之间切换。
系统运行组织如下
模式选择。 多端口开关模块的第一个输入端口用于模式控制。这是一个控制信号,用于确定应激活解决方案的哪个分支。
分支选项:
- 第一分支产生纯正弦波。这是不添加任何失真或噪声的信号。
- 第二个分支产生随机噪声,可用于模拟干扰或随机信号。
- 第三分支将来自前两个分支的信号合并。它使用一个加法器块,将正弦波信号与噪声相加,产生一个噪声正弦波。
因此,该模块的输出可以是正弦波、噪声或两者的组合,具体取决于指定的模式。
这种方法可以灵活控制模型的行为,适用于不同的情况。例如,一种模式可用于分析干净的信号,另一种模式可用于分析噪声的影响,第三种模式可用于研究干扰条件下的信号特性。因此,该系统适合在参数不断变化的情况下进行建模、测试和分析。
模型本身如下图所示:
现在让我们对模型进行分析。
辅助功能¶
In [ ]:
# Подключение вспомогательной функции запуска модели.
function run_model( name_model)
Path = (@__DIR__) * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
model = engee.open( name_model ) # Открыть модель
model_output = engee.run( model, verbose=true ); # Запустить модель
else
model = engee.load( Path, force=true ) # Загрузить модель
model_output = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
sleep(5)
return model_output
end
gr()
Out[0]:
模式比较¶
In [ ]:
mode=1
run_model("Multiport_Switch") # Запуск модели.
signal_out = collect(signal_out)
plot(signal_out.time,signal_out.value, title = "mode: $(mode)", label = "Синусоида")
Out[0]:
In [ ]:
mode=2
run_model("Multiport_Switch") # Запуск модели.
signal_out = collect(signal_out)
plot(signal_out.time,signal_out.value, title = "mode: $(mode)", label = "Шум")
Out[0]:
In [ ]:
mode=3
run_model("Multiport_Switch") # Запуск модели.
signal_out = collect(signal_out)
plot(signal_out.time,signal_out.value, title = "mode: $(mode)", label = "Зашумленная синусоида")
Out[0]: