0

for ループを使用して、.mat ファイルのフォルダーの名前を行ごとに 1 つの .csv ファイルにエクスポートしたいと考えています。

xlswrite を使用しようとしていますが、.mat ファイルのファイル名にアクセスする方法がわかりません。

私はそれらをcsvに書き込むために取り組んでいます。

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

4

2 に答える 2

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 に答える
0

xlswriteExcel ワークブックを作成する

dirコマンドを使用すると、フィールドの1つがファイルの名前である構造体を取得できます。

シンプルなファイル 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 に答える