这是一个 MATLAB 问题:该问题是由 MATLAB 文件和 Python/numpy 的交互引起的。我想在 MATLAB 中编写一个 uint8 类型的 3-D 数组,然后使用 numpy 在 Python 中读取它。这是创建该文件的 MATLAB 代码:
voxels = zeros(30, 30, 30);
....
fileID1 = fopen(fullFileNameOut,'w','s');
fwrite(fileID1, voxels, 'uint8');
fclose(fileID1);
这是尝试读取文件的 Python 代码:
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 邮箱?):
File3DArray.mat: MMDF mailbox
这是另一个 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 save
命令:
voxels = zeros(30, 30, 30, 'uint8');
save(fullFileNameOut, 'voxels', '-v7')
您需要将 '-v7'
(或 '-v6'
)添加为 save
的参数,以在旧格式,如 SciPy doesn't recognize the '-v7.3'
files默认创建。
关于arrays - 使用 SciPy 读取 MATLAB MAT 文件时出现 "Expecting miMATRIX type"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53841246/