Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 高效地将复杂的Matlab引擎阵列转换为numpy ndarray_Python_Matlab_Numpy_Type Conversion - Fatal编程技术网

Python 高效地将复杂的Matlab引擎阵列转换为numpy ndarray

Python 高效地将复杂的Matlab引擎阵列转换为numpy ndarray,python,matlab,numpy,type-conversion,Python,Matlab,Numpy,Type Conversion,按照中的答案,通过_data属性访问matlab引擎数组似乎效率更高。 然而,当Matlab返回的数组是“复杂单”数组时,似乎没有_数据属性。是否有一种等效的快速访问复数数组的方法?一种可能的解决方法是从Matlab返回两个实数数组(一个包含实数部分,另一个包含虚数部分),并用Python构建复数值 M_real, M_imag = myMatlabFunction() M_real_np = np.array(M_real._data) M_imag_np = np.array(M_imag.

按照中的答案,通过_data属性访问matlab引擎数组似乎效率更高。
然而,当Matlab返回的数组是“复杂单”数组时,似乎没有_数据属性。是否有一种等效的快速访问复数数组的方法?

一种可能的解决方法是从Matlab返回两个实数数组(一个包含实数部分,另一个包含虚数部分),并用Python构建复数值

M_real, M_imag = myMatlabFunction()
M_real_np = np.array(M_real._data)
M_imag_np = np.array(M_imag._data)
M_np = M_real_np + M_imag_np*np.complex(0,1)
然后,我们可以从快速访问每个阵列的_数据成员中获益


我仍然对更直观的解决方案感兴趣。

一个可能的解决方法是从Matlab返回两个实数组(一个包含实部,另一个包含虚部),并用Python构建复值

M_real, M_imag = myMatlabFunction()
M_real_np = np.array(M_real._data)
M_imag_np = np.array(M_imag._data)
M_np = M_real_np + M_imag_np*np.complex(0,1)
然后,我们可以从快速访问每个阵列的_数据成员中获益


我仍然对更简单的解决方案感兴趣。

您使用的是什么版本的MATLAB?在R2018a之前,复数数据存储为两个独立的内存块,一个用于实部,另一个用于虚部。自R2018a以来,它以交错方式存储在单个内存块中。我怀疑您的答案会因内部存储而有所不同。我使用的是R2016b。更确切地说,我正在使用MCR9.1将Python与Matlab代码的打包版本进行接口。我是Python和Python-Matlab接口的新手,我不知道如何查看可以从Matlab对象(如此数据)访问哪些成员。您使用的是什么版本的Matlab?在R2018a之前,复数数据存储为两个独立的内存块,一个用于实部,另一个用于虚部。自R2018a以来,它以交错方式存储在单个内存块中。我怀疑您的答案会因内部存储而有所不同。我使用的是R2016b。更确切地说,我正在使用MCR9.1将Python与Matlab代码的打包版本进行接口。我是Python和Python-Matlab接口的新手,我不知道如何查看可以从Matlab对象(如此_数据)访问哪些成员。