matlab保存數據

一:存txt文件,用dlmwrite()dlmwrite
將一個矩陣寫到由分隔符分割的文件中。

在保存整數到文件時使用save存爲ascii文件時,常常是文件裏都是實型格式的數據(有小數點,和後面很多的0,看着很不方便)。於是要保存此類數據時,我們可以使用此dlmwrite命令。

使用方法:
dlmwrite('filename', M)
使用默認分隔符“,”將矩陣M寫入文本文件filename中;
dlmwrite('filename', M, 'D')
使用分隔符D分割數據,“\t”表示tab分割,“,”爲默認分割符;
dlmwrite('filename', M, 'D', R, C)
從矩陣M的第R行、第C列開始,作爲要寫矩陣塊的左上角,將數據用D分割寫入文件。
其他用法有:
dlmwrite('filename', M, 'attrib1', value1, 'attrib2', value2,...)
dlmwrite('filename', M, '-append')
dlmwrite('filename', M, '-append', attribute-value list)

例如:


  • a = [1 2 3; 45 6; 7 8 9];
  • dlmwrite('test.txt', a);


則test.txt中的內容爲:
1,2,3
4,5,6
7,8,9

而使用save


  • a = [1 2 3; 45 6; 7 8 9];
  • save 'tst.txt'a -ascii;


文本文件裏的內容爲:
  1.0000000e+000  2.0000000e+000  3.0000000e+000
  4.0000000e+000  5.0000000e+000  6.0000000e+000
  7.0000000e+000  8.0000000e+000  9.0000000e+000

13.1數據基本操作二:
  本節介紹基本的數據操作,包括工作區的保存、導入和文件打開。
13.1.1 文件的存儲
  MATLAB支持工作區的保存。用戶可以將工作區或工作區中的變量以文件的形式保存,以備在需要時再次導入。保存工作區可以通過菜單進行,也可以通過命令窗口進行。
  1. 保存整個工作區
  選擇File菜單中的Save WorkspaceAs…命令,或者單擊工作區瀏覽器工具欄中的Save,可以將工作區中的變量保存爲MAT文件。
  2. 保存工作區中的變量
  在工作區瀏覽器中,右擊需要保存的變量名,選擇Save As…,將該變量保存爲MAT文件。
  3. 利用save命令保存
  該命令可以保存工作區,或工作區中任何指定文件。該命令的調用格式如下:
● save:將工作區中的所有變量保存在當前工作區中的文件中,文件名爲matlab.mat,MAT文件可以通過load函數再次導入工作區,MAT函數可以被不同的機器導入,甚至可以通過其他的程序調用。
●save('filename'):將工作區中的所有變量保存爲文件,文件名由filename指定。如果filename中包含路徑,則將文件保存在相應目錄下,否則默認路徑爲當前路徑。
● save('filename', 'var1', 'var2', ...):保存指定的變量在 filename指定的文件中。
● save('filename', '-struct', 's'):保存結構體s中全部域作爲單獨的變量。
● save('filename', '-struct', 's', 'f1', 'f2',...):保存結構體s中的指定變量。
● save('-regexp', expr1, expr2,...):通過正則表達式指定待保存的變量需滿足的條件。
● save('..., 'format'),指定保存文件的格式,格式可以爲MAT文件、ASCII文件等。
13.1.2 數據導入
  MATLAB中導入數據通常由函數load實現,該函數的用法如下:
●load:如果matlab.mat文件存在,導入matlab.mat中的所有變量,如果不存在,則返回error。
● load filename:將filename中的全部變量導入到工作區中。
● load filename X Y Z...:將filename中的變量X、Y、Z等導入到工作區中,如果是MAT文件,在指定變量時可以使用通配符“*”。
● load filename -regexp expr1 expr2 ...:通過正則表達式指定需要導入的變量。
● load -asciifilename:無論輸入文件名是否包含有擴展名,將其以ASCII格式導入;如果指定的文件不是數字文本,則返回error。
● load -matfilename:無論輸入文件名是否包含有擴展名,將其以mat格式導入;如果指定的文件不是MAT文件,則返回error。
例13-1 將文件matlab.map中的變量導入到工作區中。
  首先應用命令whos –file查看該文件中的內容:
  >> whos -file matlab.mat
   Name             Size          BytesClass
   A               2x3          48 doublearray
   I_q             415x552x3         687240 uint8array
   ans            1x3            24 doublearray
   num_of_cluster     1x1            8 doublearray
  Grand total is 687250 elements using 687320 bytes
  將該文件中的變量導入到工作區中:
  >> load matlab.mat
  該命令執行後,可以在工作區瀏覽器中看見這些變量,如圖13-1所示。

圖13-1 導入變量後的工作區視圖
  接下來用戶可以訪問這些變量。
  >> num_of_cluster
  num_of_cluster =
      3
  MATLAB中,另一個導入數據的常用函數爲importdata,該函數的用法如下:
● importdata('filename'),將filename中的數據導入到工作區中;
● A =importdata('filename'),將filename中的數據導入到工作區中,並保存爲變量A;
●importdata('filename','delimiter'),將filename中的數據導入到工作區中,以delimiter指定的符號作爲分隔符;
例13-2 從文件中導入數據。
  >> imported_data = importdata('matlab.mat')
  imported_data = 
              ans: [1.18131.0928 1.6534]
               A: [2x3double]
              I_q:[415x552x3 uint8]
      num_of_cluster: 3
  與load函數不同,importdata將文件中的數據以結構體的方式導入到工作區中。
13.1.3 文件的打開
  MATLAB中可以使用open命令打開各種格式的文件,MATLAB自動根據文件的擴展名選擇相應的編輯器。
  需要注意的是open('filename.mat')和load('filename.mat')的不同,前者將filename.mat以結構體的方式打開在工作區中,後者將文件中的變量導入到工作區中,如果需要訪問其中的內容,需要以不同的格式進行。
   
例13-3 open與load的比較。
  >> clear
  >> A = magic(3);
  >> B = rand(3);
  >> save
  Saving to: matlab.mat
  >> clear
  >> load('matlab.mat')
  >> A
  A =
      8    1    6
      3    5    7
      4    9    2
  >> B
  B =
      0.9501   0.4860   0.4565
      0.2311   0.8913   0.0185
      0.6068   0.7621   0.8214
  >> clear
  >> open('matlab.mat')
  ans = 
      A: [3x3 double]
      B: [3x3 double]
  >> struc1=ans;
  >> struc1.A
  ans =
      8    1    6
      3    5    7
      4    9    2
  >> struc1.B
  ans =
      0.9501   0.4860   0.4565
      0.2311   0.8913   0.0185
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章