他們自家網站是有提供……程式來分析,可惜是用matlab寫的…
What The F.. Emmm, Ahhh, Ahhh, 沒事
總之我看到這個東西就不爽了,俗話說
其實整體來說滿簡單的,只是把matlab code 用python 寫一篇,python又比matlab 好寫很多。
比較值得提的只有一個,分析binary就不能不用python的struct,相關的內容可見:
http://yodalee.blogspot.tw/2014/03/python-structdex-file-parser.html
這次我再加上用namedtuple來處理,整體會變得很乾淨;例如它一個波型的header格式是這樣:
int32 headerSize
int16 bufferType
int16 bytesPerPoint
int32 bufferSize
int16 bufferType
int16 bytesPerPoint
int32 bufferSize
那我就先定義好namedtuple跟struct的format string:
from collections import namedtuple
bufHeaderfmt = “ihhi”
bufHeaderSiz = struct.calcsize(bufHeaderfmt)
bufHeader = namedtuple(“bufHeader”, "headerSize bufferType bytesPerPoint bufferSize")
bufHeaderfmt = “ihhi”
bufHeaderSiz = struct.calcsize(bufHeaderfmt)
bufHeader = namedtuple(“bufHeader”, "headerSize bufferType bytesPerPoint bufferSize")
再來我們讀入檔案,直接寫到tuple裡,就可以用名字直接存取值,例如我們要跳過header:
bufHdr = bufHeader._make(struct.unpack(bufHeaderFmt, fd.read(bufHeaderSiz)))
fd.seek(bufHdr.bufferSize, 1)
fd.seek(bufHdr.bufferSize, 1)
是不是超簡潔的?一個晚上就寫完了=w=
人生苦短,請用python。
原matlab 網址
http://www.keysight.com/main/editorial.jspx?cc=TW&lc=cht&ckey=1185953&nid=-11143.0.00&id=1185953
原始碼在此,不過我覺得是沒什麼人會用啦orz
https://github.com/yodalee/agilentBin
沒有留言:
張貼留言