Документация Engee
Notebook

Комплексные числа в Engee и MATLAB

Открыть пример в Engee

Данная демонстрация нацелена на анализ отличий между комплексными числами в MATLAB и Engee и возможности переноса чисел из одной среды в другую.

In [ ]:
using MATLAB
using CSV
using DataFrames

Главное отличие заключается в обозначении мнимой части: в MATLAB это i, а в Engeeim.

Синтаксис формирования самих комплексных чисел идентичен для обеих сред. Есть два варианта задания:

  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, то проблем при переносе не возникает: перевод из одной среды в другую выполняется автоматически. Но для обратного действия необходимо воспользоваться командами real, imag и complex.

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

Вывод

В данной демонстрации мы разобрали, как взаимодействовать с комплексными числами в двух средах разработки, а именно MATLAB и Engee. А также изучили возможности пересылки комплексных чисел между этими двумя средами.