Python'dan Matlab'a değişkenleri döndür

Oct 08 2020

Python'dan Matlab'a bazı değişkenler aktarmaya çalışıyorum ama başaramadım. Yalnızca bir değişken geçirirsem iyi çalışıyor, ancak farklı türlerde (matris, vektör, skaler) daha fazla değişken geçirmem gerektiğinden çalışmıyor.

bu Python test_return.py içindeki kodum:

import numpy as np
def run_test_return():
    a = np.ones((5,3))
    b = np.ones((10))
    c = 4
        
    return a, b, c 
# I don't know if I should return the variables as tuples,list, dictionary... to be easier to read in matlab

Ve bu, okunacak matlab betiğidir:

pyOut = py.importlib.import_module('test_return');

py.importlib.reload(pyOut);

[a,b,c] = py.test_return.run_test_return(); % This is the part that doesn't work, I don't know how to import more than one variable, if I import only one works fine...

a = double(py.array.array('d',py.numpy.nditer(a))); % I don't know if this is the best way to read numpy 2D array

b = double(py.array.array('d',py.numpy.nditer(a)));

c = double(py.array.array('d',py.numpy.nditer(a)));

Yanıtlar

Paolo Oct 08 2020 at 14:59

İşleviniz bir demet döndürür:

>> p = py.file_return.run_test_return;
>> class(p)
py.tuple

ve demetteki öğeler farklı veri türlerindendir:

>> class(p{1})
py.numpy.ndarray

>> class(p{3})
py.int

MATLAB'da, demeti bir hücreye sarabilir ve her öğeyi bir hücre dizisine dönüştürmek için cellfun ile yineleyebilirsiniz:

>> c=cellfun(@double,cell(p),'UniformOutput',false);