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);
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi