मुझे पाइथन शब्दकोश को मैटलैब में पास करने की आवश्यकता है और मैटलैब कुछ ऑपरेशन करने के बाद वैरिएबल लौटाता है:

useMatlab4Sum.m नाम की फाइल में मैटलैब फंक्शन:

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

पायथन में:

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

मेरे पास एक और जटिल मामला है जिसके माध्यम से मैं काम कर रहा हूं, उदाहरण के लिए मैं उपरोक्त साधारण मामले का उपयोग कर रहा हूं।

3
Zanam 6 सितंबर 2018, 01:01
2
ऐसा लगता है कि शब्दकोश नहीं बल्कि numpy.ndarray है जो समस्याग्रस्त है। हो सकता है कि यह सराहना करे और इसके आसपास के लोग आपकी मदद कर सकें: mathworks.com/matlabcentral/answers/…
 – 
Cris Luengo
6 सितंबर 2018, 01:15
क्या आपने क्रिस लुएंगो द्वारा साझा किए गए लिंक में चर्चा की गई वर्कअराउंड की कोशिश की है?
 – 
Paolo
11 सितंबर 2018, 15:00

2 जवाब

यह समस्या पायथन और मैटलैब में डेटा प्रकार के अलग-अलग संचालन के कारण है। आपको अपना कोड इसमें बदलना होगा:

useMatlab4Sum(py.array.array(var))

इस लिंक पर अधिक जानकारी:

0
Pouria Ansari 12 सितंबर 2018, 10:52

आपको सूची के रूप में 'गिरफ्तारी' पास करने की आवश्यकता है। (arr.flatten()).tolist() का उपयोग करें, फिर मैटलैब में यह करें यहां क्लिक करें

0
Saeed Alahmari 7 नवम्बर 2018, 20:18