for ループを使用して、.mat ファイルのフォルダーの名前を行ごとに 1 つの .csv ファイルにエクスポートしたいと考えています。
xlswrite を使用しようとしていますが、.mat ファイルのファイル名にアクセスする方法がわかりません。
私はそれらをcsvに書き込むために取り組んでいます。
xlswrite(fullfile(dest_dir,'result.csv'), FILENAME HERE, ['A' num2str(i)]);
ファイル名を取得するには、コマンドを使用してファイルをロード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
ため、これを行うことができます。
xlswrite
Excel ワークブックを作成する
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);