使用savemat保存中文字符的.mat文件,在MATLAB打开时出现错误

3

看起来,当 .mat 文件包含中文字符时,savemat 生成的文件 MATLAB 无法打开,但 loadmat 能够打开:

$ python -c 'from scipy.io import *; savemat("tmp.mat", {"test": "你好"}); print(loadmat("tmp.mat")["test"])' && matlab -nodesktop -r 'load tmp; exit'
['你好']

To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

Error using load
Can't read file /home/tmp.mat.

你有什么好的想法可以将savemat的输出更改为MATLAB可以打开的格式,或者改变MATLAB设置以便读取这些文件吗?


Octave错误:>> load tmp.mat 警告:load:无法读取多字节编码的UTF8字符;将无法读取的字符替换为'?' - hpaulj
是的,在Octave中我也遇到了相同的问题,但我不知道如何在Matlab中解决它。肯定有一种方法可以打开带有中文字符的.mat文件。 - Kathi
1个回答

0

根据 savematsave 的文档,我认为 savemat 生成的 .mat 文件采用较旧的格式(MATLAB 称之为 -v6),不支持 Unicode(在 -v7 中引入)。

如果你savemat 切换到 HDF5 写入器,如 h5pyhd5storage,则应该能够保存新格式的 .mat 文件。或者,您可以始终将字符串存储为字节数组,并稍后进行解释。

另请参阅:在Python中创建v7.3的.mat文件, HDF5中的字符串


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接