こんにちは,
ひょっとして読み込む.mat ファイルの中に,変数 "files" が含まれていると言うことはありませんか?(含まれていなければ以下の記述は見当違いですので無視してください.)
関数 load をファイル名のみを指定して呼び出すと,ファイルに含まれている全ての変数が読み込まれるので,期せずして既存の変数を置き換えてしまうことがあります.これを避けるには次のような方法があります.
- ファイルをロードするときに,ロードしたデータを構造体変数に代入する.
- 指定した変数のみをロードする
1番目の例ですと,
files = what;
for i = 1:length(files.mat)
if regexp(files.mat{i},'^kyousei_c') % matファイル名が"kyousei_c"で始まるかどうか判定
data = load(files.mat{i}); % ファイルの中の変数を構造体のフィールドとして受けます
% ファイル中の変数は,構造体dataのフィールド(名前は変数名と
% 同じ)になります.
filename = strrep(files.mat{i},'.mat','.xlsx');
writecell({'T','X','V'},filename,'Sheet',1,'Range','A1');
writematrix(data.T,filename,'Sheet',1,'Range','A2'); %matファイル内の変数Tを一列目に保存%
writematrix(data.X,filename,'Sheet',1,'Range','B2'); %matファイル内の変数Xを二列目に保存%
writematrix(data.V,filename,'Sheet',1,'Range','C2'); %matファイル内の変数Vを二列目に保存%
end
end
2番目の例ですと
for i = 1:length(files.mat)
if regexp(files.mat{i},'^kyousei_c') % matファイル名が"kyousei_c"で始まるかどうか判定
load(files.mat{i},'T','X','V'); % matファイルに含まれる変数 'T','X','V'のみをロードします.
filename = strrep(files.mat{i},'.mat','.xlsx');
writecell({'T','X','V'},filename,'Sheet',1,'Range','A1');
writematrix(T,filename,'Sheet',1,'Range','A2'); %matファイル内の変数Tを一列目に保存%
writematrix(X,filename,'Sheet',1,'Range','B2'); %matファイル内の変数Xを二列目に保存%
writematrix(V,filename,'Sheet',1,'Range','C2'); %matファイル内の変数Vを二列目に保存%
end
end
となります.