2017-03-02 189 views
0

該數組是一個波形。我可以很容易地將二進制數組轉換爲int8,每個字節爲1個採樣。當使用12bit時,我可以設置儀器爲每個採樣發送2字節(字模式)。我一直在網上尋找轉換2bytes /樣本二進制數組爲int16載體,但迄今尚未能夠。 這個作品,每個樣品將二進制數組轉換爲int16

data = numpy.fromstring(dataword, dtype=numpy.int8) 

相同的1個字節使用解壓

data = numpy.array(unpack('%sb' %len(dataword) ,dataword)) 

無法弄清楚如何使它與2字節/採樣工作。 感謝

+0

'dataword'從哪裏來?你是如何創造它的? – heltonbiker

+2

你不只是試着改變'8'到'16'嗎? 'np.fromstring(dataword,dtype = np.int16)'適用於我 – Eric

+0

另外,你不應該用'h'(signed short)和'struct.unpack'嗎? – heltonbiker

回答

0

而不是使用struct.unpack這樣的:

data = numpy.array(unpack('%sb' %len(dataword) ,dataword)) 

你應該使用這樣的:

data = numpy.array(unpack('%sh' % len(dataword)/struct.calcsize('h'), dataword)) 
#----------------------------^ notice the 'h', signed short, 16 bits 

您必須由您正在閱讀的數字大小劃分len(dataword),在這種情況下,兩個字節。爲此,最好使用calcsize,但如果您已經知道,只需將其除以二即可。

+0

是的,它只是在工作,只需要括號以避免語法錯誤:data = numpy.array(unpack('%sh'%(len(dataword)/ 2) ,dataword))謝謝,這是行之有效的 –

+0

不錯!如果這個答案解決了這個問題,你可以接受答案! :D:D:D我很高興得到了幫助! – heltonbiker

相關問題