我有一个类型为
<1x1 java.lang.String>
的字段在Matlab中。 它的值为13:06:40当我在 python 中读取这个 mat 文件时,它会转换为
MatlabOpaque([ ('', 'java', 'java.lang.String', [[172, 237, 0, 5, 116, 0, 8, 49, 50, 58, 48, 49, 58, 53, 49]])], dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')])
- 我使用 scipy.io 将其保存回 MAT 文件,并且我有一个具有上面 dtype 的结构,而不是
<1x1 java.lang.String>
有什么方法可以使用 python 检索时间戳并将其保存为 java.lang.String 对象吗?
最佳答案
Access .mat file containing matlab classes in python
询问具有类似 loadmat
显示的 MATLAB 类对象:
MatlabOpaque([ (b'futureDS', b'MCOS', b'cStream', [[3707764736], ...])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')])
Python 中没有任何东西可以解码这种 MATLAB 或 Java 对象。如果您需要在 MATLAB 和 scipy 之间来回发送数据,请坚持使用基本的 MATLAB 数组、单元格和结构体。
您可以尝试解析该 arr
数字列表。由于它们都<256,因此它们可能代表字节。不能将其转换为普通的 MATLAB 字符串吗?
In [117]: x=[172, 237, 0, 5, 116, 0, 8, 49, 50, 58, 48, 49, 58, 53, 49]
In [118]: np.array(x,np.uint8).tostring()
Out[118]: b'\xac\xed\x00\x05t\x00\x0812:01:51'
最后 8 个字符看起来像一个时间戳。但是您了解 java.lang.String
对象吗?
关于java - matlab 日期字符串在 python scipy.io 中生成 java lang 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913301/