Комплексные числа в Engee и MATLAB
Данная демонстрация нацелена на анализ отличий между комплексными числами в MATLAB и Engee и возможности переноса чисел из одной среды в другую.
using MATLAB
using CSV
using DataFrames
Главное отличие заключается в обозначении мнимой части: в MATLAB это i, а в Engee – im.
Синтаксис формирования самих комплексных чисел идентичен для обеих сред. Есть два варианта задания:
-
через знак + и символ мнимой части;
-
через команду complex.
1+1im
1 + 1im
mat"1+1i"
1.0 + 1.0im
Complex_eng = complex(2,2)
2 + 2im
Complex_mat = mat"complex(2,2)"
2.0 + 2.0im
Если передавать комплексные числа внутри скрипта из рабочего пространства MATLAB в Engee, то проблем при переносе не возникает: перевод из одной среды в другую выполняется автоматически. Но для обратного действия необходимо воспользоваться командами real, imag и complex.
r = real(Complex_eng)
i = imag(Complex_eng)
print("real: ",r,", imag: ",i)
real: 2, imag: 2
mat"complex($r,$i)"
2 + 2im
Также есть нюансы при чтении из файла. Рассмотрим парсинг файла с мнимыми числами на примере TXT.
path = @__DIR__ # каталог, где лежит текущий скрипт
"/user/start/examples/base_simulation/complex_numbers"
Запишем комплексное число в текстовый документ из MATLAB.
mat"csvwrite($path + string('/Data.txt'),2+3i)"
Посчитаем это значение в Engee.
txt = open(io->read(io, String), path * "/Data.txt")
"2+3i\n"
Таким образом, мы посчитали строку, содержащую комплексное число в MATLAB. Напишем функцию её парсинга.
parse(ComplexF64,txt)
2.0 + 3.0im