Движок Matlab для python в Windows не принимает тип данных matlab.double в качестве аргумента функции - PullRequest
0 голосов
/ 13 октября 2018

Я перевожу код с matlab на python.Я использую движок matlab, предоставляемый mathworks, чтобы частично вызывать фрагменты старого кода matlab, в то время как он уже был переведен в python.

Например:

//python already translated code 
x = matlabEngineObject.matlab_function_example_1(arg1)
//more python already translated code using x
y = matlabEnginObject.matlab_function_example_2(x)
//more python

В соответствии с моим примером кода, моя проблема заключается в том, что в Windows я не могу передать x в качестве аргумента второй функции matlab, если это экземпляр matlab.double,что не имеет смысла, потому что я думаю, что это главная цель этого типа данных.

Однако в Linux Ubuntu я могу сделать это без проблем.Обычно я работаю в Linux Ubuntu, но мне нужно, чтобы код запускался и в Windows.

Ошибка, которую я получаю при попытке передать matlab.double функции matlab через механизм matlab, показана ниже

>>> b  = eng.test2(matlab.double([1,2]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Tomas 
Pastore\AppData\Local\Programs\Python\Python35\lib\site- 
packages\matlab\engine\matlabengine.py", line 79, in __call__
out=_stdout, err=_stderr)
TypeError: unsupported Python data type: matlab.double

Я проверил версии python между двумя системами -> обе 3.5.2 Я также проверил версии matlab, они оба R2017a, единственное отличие - это арка из-за ОС, я думаю (linux - это glnxa64, а Windows - этоwin64).

Единственное различие, которое я обнаружил в обеих средах, заключается в том, что при печати этого имени класса объекта в linux я получаю mlarray.double вместо matlab.double в окнах.Однако в обеих системах этот тип данных возвращается одним и тем же конструктором, ej: matlab.double ([1,2]).

Тип данных matlab.double в Linux Ubuntu (работает) Data type of matlab.double in Linux ubuntu (working)

Тип данных matlab.double в Windows (не работает) Data type of matlab.double in Windows (not working)

Наконец, я могу сказать, что другие функции двигателяработает правильно в Windows, так как я тестировал другие функции, и они работают нормально.

Мои сомнения:
1) Почему одна и та же версия python выводит другой тип для того же объекта.
2)Как я могу получить matlab.double, принятый движком matlab в windows.

Заранее спасибо

...