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
Arrays &引用;“矩阵类型”;使用SciPy读取MATLAB MAT文件时出错_Arrays_Matlab_Numpy_Scipy_Mat File - Fatal编程技术网

Arrays &引用;“矩阵类型”;使用SciPy读取MATLAB MAT文件时出错

Arrays &引用;“矩阵类型”;使用SciPy读取MATLAB MAT文件时出错,arrays,matlab,numpy,scipy,mat-file,Arrays,Matlab,Numpy,Scipy,Mat File,这是一个MATLAB问题:该问题是由与MATLAB文件和Python/numpy的交互引起的。我打算在MATLAB中编写uint8类型的三维数组,然后使用numpy在Python中读取它。这是创建文件的MATLAB代码: voxels = zeros(30, 30, 30); .... fileID1 = fopen(fullFileNameOut,'w','s'); fwrite(fileID1, voxels, 'uint8'); fclose(fileID1); filename = '

这是一个MATLAB问题:该问题是由与MATLAB文件和Python/numpy的交互引起的。我打算在MATLAB中编写uint8类型的三维数组,然后使用numpy在Python中读取它。这是创建文件的MATLAB代码:

voxels = zeros(30, 30, 30);
....
fileID1 = fopen(fullFileNameOut,'w','s');
fwrite(fileID1, voxels, 'uint8');
fclose(fileID1);
filename = 'File3DArray.mat'
arr = scipy.io.loadmat(filename)['instance'].astype(np.uint8)
这是尝试读取文件的Python代码:

voxels = zeros(30, 30, 30);
....
fileID1 = fopen(fullFileNameOut,'w','s');
fwrite(fileID1, voxels, 'uint8');
fclose(fileID1);
filename = 'File3DArray.mat'
arr = scipy.io.loadmat(filename)['instance'].astype(np.uint8)
这是我在运行python代码时遇到的错误:(我认为这是问题的根源。MM是什么

raise TypeError('Expecting miMATRIX type here, got %d' % mdtype)
这是Linux命令“file”在3D数组文件上的输出 我创建的(我认为这是问题的根源。什么是MMDF邮箱?)

这是另一个3D阵列文件上相同Linux命令“file”的输出 这是由MATLAB中的其他人创建的:

GoodFile.mat: Matlab v5 mat-file (little endian) version 0x0100
我希望我在MATLAB中创建的文件与GoodFile.mat相同(这样我就可以用上面的Python/Numpy代码段读取它们)。我认为Linux“file”命令的输出应该与GoodFile输出相同。
什么是实现这一点的MATLAB代码?

要创建MAT文件,请使用MATLAB命令:


您需要添加
'-v7'
(或
'-v6'
)作为
保存
的参数,以创建默认创建的较旧格式的文件。

文件
查看文件的前几个字节,并将它们与魔法字符串进行比较。这可能是它将文件标识为“MMDF邮箱”,不管是什么。您的前几个字节的数据恰好匹配。好的。但是错误提到了“v5”。我应该使用“-v5”参数吗?好的“-v6”有效(没有“-v5”选项)。谢谢。我自己永远不会想到这一点。要在python中阅读v7.3 matlab,请使用。例如,
import h5py;f=h5py.File('my.mat','r');x=np.array(f.get('data/x'))