Engee 文档
Notebook

Engee和MATLAB中的复数

本演示旨在分析MATLABEngee中复数之间的差异以及将数字从一种介质转移到另一种介质的可能性。

In [ ]:
Pkg.add(["CSV"])
In [ ]:
using MATLAB
using CSV
using DataFrames

主要区别在于虚部的指定:在MATLAB中是i,而在Engee中是im

对于这两种环境,形成复数本身的语法是相同的。 有两个可能的任务。:

  1. 使用*+符号和虚部符号*;
  2. 使用complex命令。
In [ ]:
1+1im
Out[0]:
1 + 1im
In [ ]:
mat"1+1i"
Out[0]:
1.0 + 1.0im
In [ ]:
Complex_eng = complex(2,2)
Out[0]:
2 + 2im
In [ ]:
Complex_mat = mat"complex(2,2)"
Out[0]:
2.0 + 2.0im

如果将脚本中的复数从MATLAB工作区传输到Engee,则传输没有问题:从一个环境到另一个环境的传输是自动执行的。
但是对于反向操作,您需要使用realimagcomplex命令。

In [ ]:
r = real(Complex_eng)
i = imag(Complex_eng)
print("real: ",r,", imag: ",i)
real: 2, imag: 2
In [ ]:
mat"complex($r,$i)"
Out[0]:
2 + 2im

从文件读取时也有细微差别。 让我们考虑使用TXT的示例解析具有虚数的文件。

In [ ]:
path = @__DIR__ # каталог, где лежит текущий скрипт
Out[0]:
"/user/start/examples/base_simulation/complex_numbers"

让我们从MATLAB在文本文档中编写一个复数。

In [ ]:
mat"csvwrite($path + string('/Data.txt'),2+3i)"

让我们在Engee中计算这个值。

In [ ]:
txt = open(io->read(io, String), path * "/Data.txt")
Out[0]:
"2+3i\n"

因此,我们在MATLAB中计算了一个包含复数的字符串。 让我们编写一个函数来解析它。

In [ ]:
parse(ComplexF64,txt)
Out[0]:
2.0 + 3.0im

结论

在这个演示中,我们已经弄清楚了如何在两个开发环境中与复数交互,即MATLABEngee。 我们还探讨了在这两种介质之间传输复数的可能性。