一部分だけ名前が共通​している複数のmat​ファイルを一括でlo​adし、エクセルに保​存する

2 views (last 30 days)
創 尾崎
創 尾崎 on 13 Aug 2021
Commented: 創 尾崎 on 16 Aug 2021
ファイル名が、
jirei_
で始まる全てのmatファイルを一括でloadし、それを同時にエクセルファイルに書き込みたいのですが、何か方法はありますでしょうか。
因みに以下は、1つのファイルをloadし、それをエクセルファイルに保存するまでのコードです。 "~" には任意の文字が入ります。
この操作を、jirei_という文字列が含まれる全てのファイルに対して行うコードを作りたいと思っています。
load 'jirei_"~".mat';
filename = 'jirei_"~".xlsx';
C = {'T','X'}
writecell(C,filename,'Sheet',1,'Range','A1');
writematrix(T,filename,'Sheet',1,'Range','A2'); %matファイル内の変数Tを一列目に保存%
writematrix(X,filename,'Sheet',1,'Range','B2'); %matファイル内の変数Xを二列目に保存%
よろしくお願いいたします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 14 Aug 2021
files = what; % 現在のフォルダ内のMATLABファイル一覧を取得
for i = 1:length(files.mat)
if regexp(files.mat{i},'^jirei_') % matファイル名が"jirei_"で始まるかどうか判定
load(files.mat{i}); % matファイル名が"jirei_"で始まるものを読込
filename = strrep(files.mat{i},'.mat','.xlsx');
writecell({'T','X'},filename,'Sheet',1,'Range','A1');
writematrix(T,filename,'Sheet',1,'Range','A2'); %matファイル内の変数Tを一列目に保存%
writematrix(X,filename,'Sheet',1,'Range','B2'); %matファイル内の変数Xを二列目に保存%
end
end
  1 Comment
創 尾崎
創 尾崎 on 16 Aug 2021
file関数を使う方法があるのですね、ご丁寧にありがとうございます!
是非使わせていただきます!

Sign in to comment.

More Answers (1)

Hernia Baby
Hernia Baby on 14 Aug 2021
Edited: Hernia Baby on 14 Aug 2021
個人的には dir をお勧めします
【一例】
現在のフォルダ内にある「Sample_~.mat」をすべて取得します
ついでに「.mat」の名前を「.xlsx」に変換する準備をします
str = dir('Sample_*.mat');
txt = ".xlsx";
後はfor分で操作していきます
エクセルの操作はこの中に入れてください
for i = 1:length(str)
file_name = str(i).name; % 名前を抽出
datas = load(str(i).name); % データをロード
excel_name = split(file_name,'.mat'); % .matより前を抽出
excel_name = join(excel_name,txt); % .xlsxをつける
disp(excel_name); % 確認のため名前を表示
end
{'Sample_1.xlsx'} {'Sample_2.xlsx'} {'Sample_3.xlsx'}
  1 Comment
創 尾崎
創 尾崎 on 16 Aug 2021
ご丁寧にありがとうございます!助かります!
dirの理解も深まりました。ありがとうございます。

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!