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文件中...