matlab讀取位元據檔案的方法

來源:互聯網
上載者:User

標籤:

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] ;
    end
end
% 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; 轉載:http://blog.chinaunix.net/uid-8272118-id-2033295.html

matlab讀取位元據檔案的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.