0

我想使用 for 循环将 .mat 文件文件夹的名称逐行导出到一个 .csv 文件中。

我正在尝试使用 xlswrite,但不明白如何访问 .mat 文件的文件名。

我正在将它们写入 csv。

xlswrite(fullfile(dest_dir,'result.csv'), FILENAME HERE, ['A' num2str(i)]);

4

2 回答 2

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);
于 2013-07-29T18:36:59.480 回答
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);

不幸的是,您不能将文件名保存为单元格中的字符串并像使用矩阵一样使用 say 将其写入csvwrite,因此您可以这样做。

于 2013-07-29T17:57:47.660 回答