我想使用for循环将.mat文件的文件夹名称按行导出到一个.csv文件中。
我正在尝试使用xlswrite,但不了解如何访问.mat文件的文件名。
我正在将它们写入csv。
xlswrite(fullfile(dest_dir,'result.csv'), FILENAME HERE, ['A' num2str(i)]);
答案 0 :(得分:0)
要获取文件名,请使用dir
命令加载文件,在for循环中单独读取它们,然后将它们写入文件。 (我想我已经发布了这样的东西?)这是原型:
files = dir('*.mat'); % obtain all files with .mat extenstion
fid = fopen('result.csv','a');
for k = 1:length(data)
filename = files(k).name; % get the filename
fprintf(fid, '%s,\n', filename);
end
fid = fclose(fid);
不幸的是,您不能将文件名保存为单元格中的字符串,并使用说csvwrite
将其写为矩阵,因此您可以这样做。
答案 1 :(得分:0)
xlswrite
创建一个Excel工作簿
使用dir
命令,您可以获得一个字段名称为文件的结构。
使用简单的文件IO功能可以满足您的要求。
我认为其中任何一个都可以满足您的需求:
fid=fopen('result.csv','wt');
files=dir('*.mat');
x={files(:).name};
csvFun = @(str)sprintf('%s,',str);
xchar = cellfun(csvFun, x,'UniformOutput', false);
xchar = strcat(xchar{:});
xchar = strcat(xchar(1:end-1),'\n');
fprintf(fid,xchar);
fclose(fid);
或者
如果您只需要列形式的.mat
名称:
fid=fopen('result.csv','wt');
files=dir('*.mat');
x={files(:).name};
[rows,cols]=size(x);
for i=1:rows
fprintf(fid,'%s,',x{i,1:end-1});
fprintf(fid,'%s\n',x{i,end});
end
fclose(fid);