Я пытаюсь вычислить среднее числового вектора Python в MATLAB. Чтобы уточнить, я использую Python, но пытаюсь опираться на некоторые специфичные для MATLAB функции, запуская MATLAB в среде Python. Для этого я использую matlab.engine
:
##### (From my Python script) #####
# Simple MATLAB experiment
import numpy as np
!pip install matlab
import matlab.engine
eng = matlab.engine.start_matlab()
data = np.arange(5)
data_list = data.tolist()
eng.workspace['foo'] = data_list
eng.eval('mean(foo)')
После последней строки я продолжаю сталкиваться со следующей ошибкой:
"Файл /Applications/MATLAB_R2018b.app/toolbox/matlab / datafun / mean.m, строка 127, в среднем неверный тип данных. Первый аргумент должен быть числовым или логическим. "
Насколько я понимаю, это связано с тем, что MATLAB как-то не распознает типобъекты, хранящиеся в data_list
, когда data_list
переносится в рабочую область механизма (как foo
). Я пытался (1) указать dtype
при создании данных объекта и (2) удалить data.tolist()
и перенести data
напрямую, но оба метода не решают проблему. (Метод 2 выдает другую ошибку, "Ошибка типа: неподдерживаемый тип данных Python: numpy.ndarray" .)
Я использую MATLAB R2018b и Python 3.6.
Можеткто-нибудь здесь поможет устранить неполадки? Заранее спасибо!