如何从Python直接向MATLAB传递多个numpy数组变量?
解决Python向MATLAB传递多个NumPy数组的问题
核心原因
Python函数返回多个值时,本质是返回一个元组,MATLAB调用Python函数会将这个元组作为单个返回对象,所以你会得到1x2的元组变量。
直接解决方案(MATLAB端处理)
在MATLAB中调用时,直接对返回的元组进行解构,就能分别获取两个NumPy数组,再转换为double类型:
% 解构Python返回的元组,得到两个NumPy数组对象 [mat1_py, mat2_py] = py.matgenerator.matgenerator(number); % 转换为MATLAB的double类型数组 mat1 = double(mat1_py); mat2 = double(mat2_py);
可选:修改Python函数适配MATLAB(不推荐,无必要)
如果想让Python返回的结构在MATLAB里更直观,可以把两个数组打包成列表,但MATLAB对元组的解构已经足够简便,这种方式反而多此一举。示例仅作参考:
def matgenerator(number): import numpy as np mat = np.zeros((2,4)) mat1 = number + mat mat2 = number*mat # 返回列表而非元组 return [mat1, mat2]
在MATLAB中可通过索引获取:
result_list = py.matgenerator.matgenerator(number); mat1 = double(result_list{1}); mat2 = double(result_list{2});
总结
最简洁高效的方式还是在MATLAB端直接解构Python返回的元组,无需修改Python代码,就能分别拿到两个NumPy数组并转换为MATLAB的double类型。
内容的提问来源于stack exchange,提问作者Kosu K.
相关产品推荐
相关产品推荐

