天天看點

Matlab輸出寫入文本檔案及csv檔案

下面的一個示例是關于統計每個檔案夾下的檔案數目,具體代碼如下:

clear
clc

folder_path = 'E:\ori\ImageNet_data';
all_folder = dir(folder_path);
fid = fopen('number_of_ImageNet.txt','a+');
for i=1:length(all_folder)-2
    folder_name = all_folder(i+2).name;
    all_file = dir([folder_path filesep folder_name]);
    fprintf(fid,'%s\t\t%d\n',folder_name,length(all_file)-2);
end
fclose(fid);

dt=importdata('number_of_ImageNet.txt'); 
T=table(dt.rowheaders,dt.data(:,2));
writetable(T,'number_ImageNet.csv');

T=table(dt.rowheaders,dt.data(:,2),'VariableNames',{'FoldeName','Number'});
writetable(T,'number_by_ImageNet.csv');
           

在上述源碼中,

fprintf(fid,'%s\t\t%d\n',folder_name,length(all_file)-2);
           

此句用來把輸出結果以追加的形式('a+')寫到fid句柄訓示的文本檔案内,用delimiter='\t\t',得到的寫入結果如下所示:

Matlab輸出寫入文本檔案及csv檔案

如果要把fid訓示的文本檔案的内容寫入到類似Microsoft Office Excel格式的csv檔案,則需要如下實作:

dt=importdata('number_of_ImageNet.txt'); 
T=table(dt.rowheaders,dt.data(:,2));
writetable(T,'number_ImageNet.csv');
           

即先導入文本檔案,得到的是一個結構體,如下所示:

Matlab輸出寫入文本檔案及csv檔案

然後采用table函數,制作table型資料,table函數的第一個參數表示csv檔案的第一列資料,依次是第二列等,然後調用writetable函數把表格型資料寫入到csv檔案,這個csv檔案不必事先建立。寫入結果如下所示:

Matlab輸出寫入文本檔案及csv檔案

其中上圖中的Var1與Var2列變量的名字可以手動修改,也可以在程式中實作,如下代碼:

T=table(dt.rowheaders,dt.data(:,2),'VariableNames',{'FoldeName','Number'});
           

其中,'VariableNames',{'FoldeName','Number'}便是為列指定變量名。運作結果如下:

Matlab輸出寫入文本檔案及csv檔案

行的變量名可以通過RowNames參數來指定。

繼續閱讀