У меня есть функция в алгоритме MATLAB, которая использует функцию sum .Как описано в doc , вход этой функции должен быть одного из следующих типов:
- Vector
- Matrix
- Многомерный массив
Я знаю, что на сайте MATLAB есть функции и doc для конвертации этих типов данных.Проблема в том, что у меня нет разрешения изменять алгоритм, только то, на что я его отправляю.Есть ли способ внести соответствующие изменения в python вместо того, чтобы брать данные python в MATLAB и вносить изменения в тип данных?
На данный момент я пытался использовать функции MATLAB из движка непосредственно в python.Я не уверен, что преобразование работает правильно.
Вот MWE моей проблемы:
import matlab
import matlab.engine
myEngine = matlab.engine.start_matlab()
pythonData = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
pythonData = myEngine.cellstr(pythonData)
print('after cellstr()', pythonData)
pythonData = myEngine.cell2mat(pythonData)
print('after cell2mat()', pythonData)
matlabSum = myEngine.sum(pythonData)
print('sum:', matlabSum)
Вот вывод на мой терминал .
Вы заметите, что cellstr мало что сделал, что странно.У кого-нибудь есть идеи о том, как правильно сделать эти преобразования?Кроме того, сумма не 477. Это может быть 45. Я вполне уверен, что это потому, что он преобразует его в ASCII, что приведет к [49,50,51, ...], давая 477.
Поскольку matlab автоматически преобразовывает списки в ячейки, я попытался изменить каждое значение для целых чисел, а затем использовать engine.cell2mat непосредственно в список, но я получаю эту ошибку:
TypeError: array of MATLAB int64 type cannot be returned on this platform
На данный момент явсе еще пытаюсь преобразовать питона в один из форматов данных MATLAB, упомянутых выше.Я использую Python 2.7.