2015-10-02 15 views
0
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')]) 
  • 我保存這個回MAT文件使用scipy.io和我有一個結構與上述dtype而不是<1x1 java.lang.String>

任何方式我可以檢索時間戳使用python並將其保存爲java.lang.String對象?

回答

1

Access .mat file containing matlab classes in python

詢問有關MATLAB類對象有一個類似的loadmat顯示:

MatlabOpaque([ (b'futureDS', b'MCOS', b'cStream', [[3707764736], ...])], 
    dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]) 

沒有什麼用Python能解碼這種MATLAB或Java對象。如果您需要在MATLAB和scipy stick之間來回傳輸數據,則需要使用基本的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對象嗎?

+0

java.lang.String對象 - 並不多。我在java文檔中搜索,但沒有找到任何有助於在python中解析消息的信息。 但matlab具有內置的java.lang.String支持。所以看起來我必須編寫兩個腳本來實現我的目標。在python中處理文件來做我想做的事情,然後使用Matlab對日期進行後期處理。 – Raaj