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]:

结论

这些图表证实了系统的正确操作:所有模式都按照我们的预期显示。

该模型成功地演示了在纯正弦波、噪声和噪声信号之间进行选择的可能性,为分析各种使用信号的场景提供了一个直观而灵活的工具。