如何将Matlab调用Scipy Decimate得到的ndarray转为Matlab数组?
在MATLAB中转换Python numpy ndarray为MATLAB数组的方法
针对你在MATLAB中调用Scipy Decimate函数后得到的Python numpy ndarray对象,这里提供几种可靠的转换方案:
方法1:直接类型转换
如果你的ndarray是实数类型(如你给出的float64 dtype),直接调用MATLAB的double()函数即可完成转换:
matlab_array = double(y_data);
如果直接转换无效,可尝试提取数组的实部(你的对象包含real属性):
matlab_array = double(y_data.real);
方法2:通过Python列表中转
利用numpy数组的tolist()方法转为Python列表,再直接转换为MATLAB数组:
matlab_array = y_data.tolist();
若列表存在嵌套层级问题,可配合cell2mat()处理:
matlab_array = cell2mat(y_data.tolist());
方法3:从内存视图提取原始数据
利用data属性的内存视图,通过字节转换提取数据:
% 将内存视图转为字节数组 byte_buffer = y_data.data.tobytes(); % 字节转float64类型MATLAB数组 matlab_array = typecast(uint8(byte_buffer), 'double'); % 按原数组shape调整维度 matlab_array = reshape(matlab_array, y_data.shape{:});
优先尝试方法1,简洁高效;若遇到类型兼容问题,再用方法2或3。
内容的提问来源于stack exchange,提问作者ZhangJ
相关产品推荐
相关产品推荐

