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)中与复数交互。我们还探索了在这两个环境之间转发复数的可能性。