필터 지우기
필터 지우기

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

조회 수: 30 (최근 30일)
創 尾崎
創 尾崎 2021년 8월 13일
댓글: 創 尾崎 2021년 8월 16일
ファイル名が、
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を二列目に保存%
よろしくお願いいたします。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 8월 14일
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
創 尾崎
創 尾崎 2021년 8월 16일
file関数を使う方法があるのですね、ご丁寧にありがとうございます!
是非使わせていただきます!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Hernia Baby
Hernia Baby 2021년 8월 14일
편집: Hernia Baby 2021년 8월 14일
個人的には 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
創 尾崎
創 尾崎 2021년 8월 16일
ご丁寧にありがとうございます!助かります!
dirの理解も深まりました。ありがとうございます。

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 ファイルの操作에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!