matlab讀取二進位制資料檔案的方法

2022-09-04 01:48:11 字數 1498 閱讀 7703

matlab可以直接讀取二進位制資料檔案,並且可以將其加入到矩陣中。

如果對c語言十分熟悉的話,應該對fopen,fclose,ftell,fseek,fread,fwrite,feof

這些函式非常熟悉了,幸運的是在matlab中仍然可以使用這些函式來讀入實驗資料。

現在假定有乙個資料檔案叫data.dat,它的前面2k是存放引數的,我們做資料處理的時候

需要跳過去,後面的資料是16位整數型別的,每組資料有512個。現在要把該資料檔案的

所有資料讀入乙個nx512的矩陣中,n的個數不定,根據資料檔案中的資料而定。

用.m指令碼的方式編寫如下:

% deal data from specified data file

clear ;

data_fname = 'data.dat' ; % 這裡是檔名

jump_distance = 2048 ;    % 這裡是跳過的位元組數

% 開啟方式為二進位制開啟,其實'r'就行,matlab是預設二進位制形式開啟檔案的

file_id = fopen(data_fname, 'rb');

% 從檔案開始跳過jump_distance個位元組

fseek(file_id, jump_distance, 'bof');

% 先手工構造乙個1x512大小的矩陣

raw_data = [1:1:512] ;

while feof(file_id) == 0

% 這就是大名頂頂的fread了,資料型別是int16,每次讀入512個數

% raw_array每次都是512x1的矩陣,ele_count為讀入的數的個數(正常情況下應為512)

[row_array, ele_count] = fread(file_id, 512, 'int16') ;

if ele_count < 512 % elecount < 512代表資料不夠,已經到了檔案的結尾

break ;

else

% 將512x1的row_array轉置一下,變為1x512的矩陣

row_array = row_array'  ;

% 然後,將row_array追加到raw_data中

raw_data = [raw_data; row_array] ;

endend

% get off the first line [1:1:512]

% 這裡就是要把raw_data的第一行資料手工構造的那行資料給去掉,剩下的就都是檔案中的資料了

raw_data(1,:)= ;

% 關閉檔案

fclose(file_id);

% delete other usless vars

% 這裡是把用過的變數都刪除掉,免得workspace裡面亂七八糟的什麼都有,這是個好習慣,呵呵。

clear data_fname jump_distance file_id fid ele_count i m n row_array ans;

**:

Matlab讀取二進位制檔案

ps bin檔案是二進位制檔案,是檔案格式binary的縮寫。一 檔案的開啟與關閉 1 開啟檔案 在讀寫檔案之前,必須先用fopen函式開啟或建立檔案,並指定對該檔案進行的操作方式。fopen函式的呼叫格式為 fid fopen 檔名,開啟方式 說明 1 fid 用於儲存檔案控制代碼值,如果返回的控...

php讀取二進位制 php讀取二進位製流

將php資料轉換為二進位制資料 string pack string format mixed args mixed 將二進位制資料轉換為php資料 array unpack string format,string data format a nul padded string a nul 字串填...

matlab 如何讀取二進位制 十六進製制txt文件

本方法同樣適合讀取十六進製制和二進位制以外的其他進製檔案,txt使用乙個最簡單的命令就可以讀取 textread 這是乙個十分有用,簡便的函式 對於fopen fscanf而言 讀取二進位制txt檔案 假如txt文件中內容為0001 0010 0011 0100 1000,儲存在pin.txt文件中...