2014-07-18 73 views
0

所以我試圖使用一些數據文件,其中包含一個文本標頭後跟二進制數據,16位有符號整數與最低有效字節第一。MatLab中的二進制數據

我似乎無法正確打開二進制數據。文本標題的長度可變。 我試過以下,但我的問題是數據實際上不是以二進制存儲的,但已經是一個數字,但不正確。 標題的長度是可變的,所以我無法告訴它在沒有首先打開文件的情況下閱讀很多字符。

fileName = 'PATH/TO/FILE/FILE_NAME.DAT'; 
dataFile = fopen(fileName); 
header = ''; 
i = 1; 
%dataContents = fileread(fileName); 
dataContents = fread(dataFile); 
while i < 115 
    char = dataContents(i); 
    header = [header char]; 
    if char == '}' 
     break 
    end 
    i = i + 1; 
end 
header = header(2:end-1); 
headerSplit = strsplit(header,','); 
fileSize = str2double(headerSplit(17)); 
binaryData = dataContents(i:end); 
data = []; 
j = 1; 
num = binaryData(1:50) 
while j < fileSize 
    data = [data, bin2dec(num2str(binaryData(j:j+1)))]; 
    j = j + 2; 
end 
length(data) 

任何幫助將是偉大的。我是matlab新手,所以我可能會錯過簡單的東西。

回答

1

不知道數據格式,幾乎不可能提供詳細的建議。您可能需要根據您的數據格式設置precision參數fread

解析頭文件後,您知道數據的起始位置。使用fseek(dataFile, numel(header)+2, 'bof')將文件句柄設置爲文件開頭的位置。然後使用fread以匹配精度重新開始讀取。

+0

通過您指定精度decimal精度? –

+0

謝謝,這完美解決! –