savemat生成的.mat
文件在包含中文字符时无法打开,但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设置,这样我就可以读取文件? 最佳答案
根据savemat
和save
的文档,我认为savemat
生成的.mat
文件格式较旧(MATLAB称之为-v6
,不支持Unicode(在-v7
中引入)。
如果从.mat
切换到像savemat
或h5py
这样的HDF5写入程序,您应该能够保存较新格式的hd5storage
文件。或者,可以始终将字符串存储为字节数组,并在以后解释它们。
另请参见:Creating a .mat file of v7.3 in python,Strings in HDF5。