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',得到的写入结果如下所示:


如果要把fid指示的文本文件的内容写入到类似Microsoft Office Excel格式的csv文件,则需要如下实现:

dt=importdata('number_of_ImageNet.txt'); 
T=table(dt.rowheaders,dt.data(:,2));
writetable(T,'number_ImageNet.csv');
即先导入文本文件,得到的是一个结构体,如下所示:


然后采用table函数,制作table型数据,table函数的第一个参数表示csv文件的第一列数据,依次是第二列等,然后调用writetable函数把表格型数据写入到csv文件,这个csv文件不必事先创建。写入结果如下所示:


其中上图中的Var1与Var2列变量的名字可以手动修改,也可以在程序中实现,如下代码:

T=table(dt.rowheaders,dt.data(:,2),'VariableNames',{'FoldeName','Number'});
其中,'VariableNames',{'FoldeName','Number'}便是为列指定变量名。运行结果如下:



行的变量名可以通过RowNames参数来指定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值