Engee 文档
Notebook

求解算法的分支

本示例演示了如何使用多端口切换模块来实现从模型的多个分支中选择一个的机制。该模块允许根据指定的模式在不同的求解选项之间切换。

系统运行组织如下

模式选择。 多端口开关模块的第一个输入端口用于模式控制。这是一个控制信号,用于确定应激活解决方案的哪个分支。

分支选项:

  • 第一分支产生纯正弦波。这是不添加任何失真或噪声的信号。
  • 第二个分支产生随机噪声,可用于模拟干扰或随机信号。
  • 第三分支将来自前两个分支的信号合并。它使用一个加法器块,将正弦波信号与噪声相加,产生一个噪声正弦波。

因此,该模块的输出可以是正弦波、噪声或两者的组合,具体取决于指定的模式。

这种方法可以灵活控制模型的行为,适用于不同的情况。例如,一种模式可用于分析干净的信号,另一种模式可用于分析噪声的影响,第三种模式可用于研究干扰条件下的信号特性。因此,该系统适合在参数不断变化的情况下进行建模、测试和分析。

模型本身如下图所示: image.png 现在让我们对模型进行分析。

辅助功能

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]:
Plots.GRBackend()

模式比较

In [ ]:
mode=1
run_model("Multiport_Switch") # Запуск модели.
signal_out = collect(signal_out)
plot(signal_out.time,signal_out.value, title = "mode: $(mode)", label = "Синусоида")
Building...
Progress 100%
Progress 100%
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 = "Шум")
Building...
Progress 100%
Progress 100%
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 = "Зашумленная синусоида")
Building...
Progress 100%
Progress 100%
Out[0]:

结论

这些曲线图证实了系统的正确性:所有模式的显示都符合我们的预期。

该模型成功地展示了在纯正弦信号、噪声信号和噪声信号之间进行选择的能力,为分析不同的信号情况提供了一个清晰而灵活的工具。