在 Engee 环境中使用 MATLAB 代码
本示例演示了如何在 Engee 中调用 MATLAB 函数,以及这些函数的应用及其与环境内置函数的对比。
在 Engee 中绘制曲线:
连接后端——图形绘制方法:
In [ ]:
Pkg.add(["Statistics"])
In [ ]:
using Plots
生成两个信号:
In [ ]:
A = sin.(range(0, 2pi, length=100)')' # 正弦波
B = @. sin(A) + 0.1 * randn() # 带噪声的正弦波
C = 1:1:100;
在图形上显示两个信号:
In [ ]:
plot(C,A)
plot!(C,B)
Out[0]:
在预先连接统计函数库的基础上,计算两个信号之间的相关性:
In [ ]:
using Statistics
engee_cor = cor(A,B)
Out[0]:
从 Engee 调用 MATLAB 代码
在 Julia 中可以调用任意 MATLAB 命令或函数,并获取返回结果。
连接 MATLAB 接口:
In [ ]:
using MATLAB
将 Engee 中的信号数据加载到 MATLAB 内核中:
In [ ]:
D = hcat(A,B)
A = D[:,1];
B = D[:,2];
mat"""
A = $A;
B = $B;
R = corrcoef(A,B);
"""
使用 MATLAB 内核函数计算两个信号之间的相关性:
In [ ]:
matlab_cor = mat"R; R()"
Out[0]:
比较结果,并计算使用 MATLAB 和 Engee 方法所得结果的绝对误差:
In [ ]:
difference = abs(engee_cor[1,1] - matlab_cor[1,2])
println("Engee相关性: ", engee_cor[1,1], '\n', "Matlab相关性: ", matlab_cor[1,2], '\n', "绝对误差: ", difference)
从 MATLAB 调用频率逐渐增加的正弦波:
In [ ]:
chirp = mat"chirp = dsp.Chirp('InitialFrequency', 0,'SamplesPerFrame', 500); chirp()"
plot(chirp)
Out[0]:
构建魔方:
In [ ]:
mat"magic(3)"
Out[0]:
最简单的算术运算:
In [ ]:
x = range(-10.0, stop=10.0, length=50)
y = range(2.0, stop=3.0, length=50)
mat"""
$u = $x + $y
$v = $x - $y
"""
plot(u,v)
Out[0]:
从 Engee 调用 MATLAB 文件
文件管理器中打开的文件夹路径:
In [ ]:
mat"cd $(@__DIR__)"
运行 m-脚本:
.png)
In [ ]:
mat"file"
In [ ]:
mat"run('file.m')"
In [ ]:
mat"""run("file.m")"""
运行 MATLAB 函数:
.png)
In [ ]:
mat"fun(10,9)"
Out[0]:
In [ ]:
x = 12;
y = 13.12;
z = mat"fun($x,$y)"
z/10
Out[0]:
查看 MATLAB 工作区:
In [ ]:
mat"whos"
清空 MATLAB 工作区:
In [ ]:
mat"clear"
mat"whos"
输出:
本示例演示了在 Engee 环境中使用 MATLAB 函数、它们的协同工作,以及所用方法在数值上的差异。
.png)
.png)
.png)