Kembalikan variabel dari python ke Matlab
Oct 08 2020
Saya mencoba meneruskan beberapa variabel dari python ke Matlab, tetapi saya tidak berhasil. Jika saya hanya mengirimkan satu variabel, itu berfungsi dengan baik, tetapi karena saya perlu meneruskan lebih banyak variabel dengan jenis yang berbeda (matriks, vektor, skalar) tidak berfungsi.
ini kode saya di Python test_return.py:
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
Dan inilah script matlab untuk dibaca:
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)));
Jawaban
Paolo Oct 08 2020 at 14:59
Fungsi Anda mengembalikan tupel:
>> p = py.file_return.run_test_return;
>> class(p)
py.tuple
dan elemen dalam tupel memiliki tipe data yang berbeda:
>> class(p{1})
py.numpy.ndarray
>> class(p{3})
py.int
di MATLAB, Anda cukup membungkus tupel dalam sel dan mengulanginya dengan cellfun untuk mengubah setiap elemen menjadi array sel ganda:
>> c=cellfun(@double,cell(p),'UniformOutput',false);
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'