Передача словаря Python в Matlab - PullRequest
       16

Передача словаря Python в Matlab

0 голосов
/ 06 сентября 2018

Мне нужно передать словарь Python в Matlab, и Matlab возвращает переменную после выполнения некоторой операции следующим образом:

Функция Matlab в файле с именем useMatlab4Sum.m:

function matlabSum = useMatlab4Sum(var)
    varin = struct(var)
    a = varin.var
    arr = varin.arr
    return a*arr(:)

В Python:

myDict = {'a':2, 'arr':np.array([[1, 2],[3, 4]])}
eng = matlab.engine.start_matlab()
params = eng.useMatlab4Sum(myDict)
eng.quit

Но я получаю ошибку:

TypeError: unsupported Python data type: numpy.ndarray

У меня есть более сложный случай, через который я прорабатываю, я просто использую, например, простой случай выше.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

вам нужно передать 'arr' в виде списка. используйте (arr.flatten()).tolist(), затем в Matlab сделайте это ClickHere

0 голосов
/ 12 сентября 2018

Эта проблема связана с разной обработкой типов данных в python и matlab. Вы должны изменить свой код на это:

useMatlab4Sum(py.array.array(var))

больше информации по этой ссылке :

...