读取 Matlab .mat 文件:变量的等级和暗淡正确,但数据为 NULL

Reading in Matlab .mat file: variable's rank and dims correct, but data is NULL

我正在尝试使用 matio 从 Matlab 读取 .mat 文件,并且变量带有正确的等级和暗淡度,但数据为空:

mat_t    *matfp;
matvar_t *matvar;
matfp = Mat_Open("the_file.mat",MAT_ACC_RDONLY);
matvar = Mat_VarReadInfo(matfp,"my_var");

assert(matvar->rank==2);
assert(nrows==matvar->dims[0] && ncols==matvar->dims[1]);

但是

matvar->data==NULL

我假设读取 .mat 文件时出现问题,但我不确定如何诊断它。

您应该检查 MATLAB 文件版本。

可能该文件是用 MATLAB 7.3 版编写的或经过压缩的。

如果你在没有 zlib 的情况下构建你的 lib (matio),你将无法读取压缩数据。 如果您在没有 zlib 和 HDF5 的情况下构建,您将无法读取文件版本 7.3 文件。

要访问变量的数据,您必须使用 Mat_VarRead() 而不是 Mat_VarReadInfo()。否则 matvar->data 为 NULL.