MATLAB - 資料輸出



在 MATLAB 中,資料匯出(或輸出)意味著寫入檔案。MATLAB 允許您在讀取 ASCII 檔案的其他應用程式中使用您的資料。為此,MATLAB 提供了多種資料匯出選項。

您可以建立以下型別的檔案:

  • 來自陣列的矩形、分隔符分隔的 ASCII 資料檔案。

  • 按鍵操作和生成的文字輸出的日誌(或日誌)檔案。

  • 使用低階函式(如 fprintf)的專用 ASCII 檔案。

  • MEX 檔案,用於訪問寫入特定文字檔案格式的 C/C++ 或 Fortran 例程。

除此之外,您還可以將資料匯出到電子表格。

有兩種方法可以將數字陣列匯出為分隔符分隔的 ASCII 資料檔案:

  • 使用 save 函式並指定 -ascii 限定符

  • 使用 dlmwrite 函式

使用 save 函式的語法為:

save my_data.out num_array -ascii

其中,my_data.out 是建立的分隔符分隔的 ASCII 資料檔案,num_array 是數字陣列,−ascii 是指定符。

使用 dlmwrite 函式的語法為:

dlmwrite('my_data.out', num_array, 'dlm_char')

其中,my_data.out 是建立的分隔符分隔的 ASCII 資料檔案,num_array 是數字陣列,dlm_char 是分隔符字元。

示例

以下示例演示了該概念。建立指令碼檔案並鍵入以下程式碼:

num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out

執行檔案時,它將顯示以下結果:

   1.0000000e+00   2.0000000e+00   3.0000000e+00   4.0000000e+00
   4.0000000e+00   5.0000000e+00   6.0000000e+00   7.0000000e+00
   7.0000000e+00   8.0000000e+00   9.0000000e+00   0.0000000e+00

1 2 3 4
4 5 6 7
7 8 9 0

請注意,save -ascii 命令和 dlmwrite 函式不適用於元胞陣列作為輸入。要從元胞陣列的內容建立分隔符分隔的 ASCII 檔案,您可以

  • 或者,使用 cell2mat 函式將元胞陣列轉換為矩陣

  • 或者使用低階檔案 I/O 函式匯出元胞陣列。

如果您使用 save 函式將字元陣列寫入 ASCII 檔案,它會將字元的 ASCII 等效項寫入檔案。

例如,讓我們將單詞“hello”寫入檔案:

h = 'hello';
save textdata.out h -ascii
type textdata.out

MATLAB 執行上述語句並顯示以下結果。這是字串“hello”的字元以 8 位 ASCII 格式顯示。

1.0400000e+02   1.0100000e+02   1.0800000e+02   1.0800000e+02   1.1100000e+02

寫入日誌檔案

日誌檔案是 MATLAB 會話的活動日誌。diary 函式會在磁碟檔案中建立會話的精確副本,但不包括圖形。

要開啟 diary 函式,請鍵入:

diary

或者,您可以提供日誌檔案的名稱,例如:

diary logdata.out

要關閉 diary 函式:

diary off

您可以在文字編輯器中開啟日誌檔案。

使用低階 I/O 將資料匯出到文字資料檔案

到目前為止,我們已經匯出了數字陣列。但是,您可能需要建立其他文字檔案,包括數字和字元資料的組合、非矩形輸出檔案或使用非 ASCII 編碼方案的檔案。出於這些目的,MATLAB 提供了低階 fprintf 函式。

與低階 I/O 檔案活動一樣,在匯出之前,您需要使用 fopen 函式開啟或建立檔案並獲取檔案識別符號。預設情況下,fopen 以只讀方式開啟檔案。您應該指定寫入或追加的許可權,例如“w”或“a”。

處理完檔案後,您需要使用 fclose(fid) 函式關閉它。

以下示例演示了該概念:

示例

建立指令碼檔案並在其中鍵入以下程式碼:

% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
 
% open a file for writing
fid = fopen('logtable.txt', 'w');
 
% Table Header
fprintf(fid, 'Log     Function\n\n');
 
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f    %f\n', y);
fclose(fid);

% display the file created
type logtable.txt

執行檔案時,它將顯示以下結果:

Log         Function

0.000000    -Inf
10.000000    2.302585
20.000000    2.995732
30.000000    3.401197
40.000000    3.688879
50.000000    3.912023
60.000000    4.094345
70.000000    4.248495
80.000000    4.382027
90.000000    4.499810
100.000000    4.605170
廣告