2013-05-09 70 views
0

我有一個擴展名爲.bin的二進制文件。該文件由數據採集軟件創建。基本上,「測量計算」16位數據採集硬件正在從換能器接收信號(通過放大器放大後)並通過USB將其發送到PC。然後程序/軟件正在生成一個.bin文件,該文件對應於從數據aq接收到的串行數據。硬件。有幾種方法可以讀取這個.bin文件並在MATLAB中繪製信號。MATLAB如何從.bin文件讀取和解釋二進制數字?

當我用hexeditor打開這個.bin文件時,我可以看到ASCII或1和0(二進制)。事情是我不知道如何解釋這些知識。在16秒內獲得的文件中有208000字節。由於DAQ設備具有16位分辨率,我認爲每個2字節對應一個採樣。所以我認爲例如一個16位數據如1000100111110010被MATLAB轉換成相應的電壓電平。但是我試圖打開兩個不同電壓級別的.bin文件,例如1V和9V,而且這些數字似乎與我的想法沒有關係。

MATLAB如何從.bin文件中讀取和解釋二進制數字?

日Thnx,

+1

像.dat這樣的擴展名.bin是相當無意義的,並且幾乎不會告訴你有關內容格式的內容。你用什麼軟件來捕獲這些數據?它在什麼樣的採樣率下獲得?另外,它是否恰好*您獲得的16秒數據?如果是這樣,那麼在採樣率下,您可以計算出數據是否具有某種格式規範,或者僅僅是數值的轉儲。 – wakjah 2013-05-09 14:45:26

+0

我不記得采樣率。該程序由德爾福語言的工程師編寫。這不是一個商業的。每次收購花了我16秒。然後我用hexeditor打開這個文件,看到bin有208000個字節的數據,所以我認爲這意味着104000個16位塊和104000/16sec = 6500個採樣/秒,因爲每個樣本都有16位深度。我不確定我在這裏的知識。我怎樣才能知道MATLAB如何解釋這些二進制數字?在900頁的MATLAB書中只有1或2頁寫關於這個問題。我找不到任何tutuorial,我可以瞭解它是如何發生的。 – user16307 2013-05-09 14:53:43

回答

1

假設你的.bin文件是真的只是一個記錄的值的轉儲,您可以使用fread讀取數據(見the documentation更多信息):

fid = fopen('path_to_your_file', 'r'); 
nSamples = 104000; 
data = fread(fid, nSamples, 'int16'); 
fclose(fid); 

你也但是,需要知道這些數據是已簽名還是未簽名 - 如果未簽名,則可以使用'uint16'作爲fread的第三個參數。您還應該瞭解它是大端還是小端......您應該檢查原始程序的源代碼。

記錄您進行此類收購的採樣率是一個不錯的主意,因爲除非您不知道這些信息,否則您將很難做任何事情,除此之外無法進行分析。通常這種數據存儲在.wav文件中,因此數據及其採樣率(實際上是位深度)都存儲在文件中。這樣你就不需要單獨的紙張來跟隨你的文件了(另外,讀取MATLAB中的.wav文件非常簡單)。

+0

它不是wav。它是一個BIN文件。BIN – user16307 2013-05-11 17:20:52

+0

我提供的代碼應該適用於.bin文件格式。關於.wav文件的內容只是一般性的建議。 – wakjah 2013-05-12 08:41:22