Я перевожу код с 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 (работает)
Тип данных matlab.double в Windows (не работает)
Наконец, я могу сказать, что другие функции двигателяработает правильно в Windows, так как я тестировал другие функции, и они работают нормально.
Мои сомнения:
1) Почему одна и та же версия python выводит другой тип для того же объекта.
2)Как я могу получить matlab.double, принятый движком matlab в windows.
Заранее спасибо