Engee 文档
Notebook

基带调制

此示例显示了通过将调制的复信号乘以复正弦波来执行带boost的频率转换来执行基带调制的简单方法。 优选在复杂基带中对系统建模。 然而,在某些情况下,有必要在实际带宽中模拟系统。 这方面的一个例子是当来自相邻频带的信号被非线性处理并且在期望频带中引起干扰时。

算法的方案具有以下形式:

passband.png

建立模型

现在让我们来看看通信系统模型,它是使用Engee模型对数字信号处理的模拟。

Passbanmod

image.png

非线性干扰

image.png

升频器

image.png

下变频器

image.png

计算RMS EVM

image.png

计算BER

image.png
In [ ]:
function run_model( name_model, path_to_folder )
    
    Path = path_to_folder * "/" * 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

    return model_output
end
# 启动模型
run_model( "passbandmod", @__DIR__ )
Building...
Progress 0%
Progress 5%
Progress 11%
Progress 16%
Progress 22%
Progress 27%
Progress 33%
Progress 38%
Progress 44%
Progress 49%
Progress 54%
Progress 60%
Progress 66%
Progress 71%
Progress 77%
Progress 83%
Progress 88%
Progress 93%
Progress 99%
Progress 100%
Progress 100%
In [ ]:
# 连接图书馆
using CSV, DataFrames
gr() # 启用后端图形显示方法
Out[0]:
Plots.GRBackend()
In [ ]:
# # EVM
EVM = Matrix(CSV.read("$(@__DIR__)/EVM.csv", DataFrame)); # 上传数据
plot(EVM[:,1], EVM[:,2], xlabel="时间", ylabel="EVM", title="EVM") # 绘制图形
Out[0]:
No description has been provided for this image
In [ ]:
# # BER
BER = Matrix(CSV.read("$(@__DIR__)/BER.csv", DataFrame)); # 上传数据
plot(BER[:,1], BER[:,2], xlabel="时间", ylabel="BER", title="BER") # 绘制图形
Out[0]:
No description has been provided for this image

结论

我们已经实现了通过将调制的复信号乘以复正弦波来执行频率变换的简单方法的模型来执行基带调制。 他们还展示了如何在Engee中使用模型进行数字信号处理。