規則性のある複数のファイルで同一の計算の仕方

7 次查看(过去 30 天)
かお
かお 2023-9-28
评论: かお 2023-10-5
まず,a01.csv,a02.csv,a03.csv…のような名前に規則性のある複数ファイルがあります。
例えば,それぞれのファイルの1列目と2列目のデータを一様に掛け算をしたいのですが,いい方法はありますでしょうか?
よろしくお願いします。

采纳的回答

Atsushi Ueno
Atsushi Ueno 2023-9-28
for i = 1:10
writematrix(randi(9,5,2), sprintf('a%02d.csv',i))
end % 動作確認用サンプルCSVファイルa01.csv,a02.csv,a03.csv…を10個作成
for k = 1:10
data = readmatrix(sprintf('a%02d.csv',k)); % CSVファイルから読み込み
data = [data, data(:,1).* data(:,2)]; % 1列目×2列目を3列目に格納して
writematrix(data, sprintf('a%02d.csv',k)); % 元のCSVファイルに書き込む
% fprintf('\na%02d.csv',k); type(sprintf('a%02d.csv',k)) % 結果確認用
end
  1 个评论
かお
かお 2023-10-5
ありがとうございます!
かなりわかりやすいです。

请先登录,再进行评论。

更多回答(1 个)

Atsushi Ueno
Atsushi Ueno 2023-9-28
データストアを使う方法
for i = 1:10
writematrix(randi(9,5,2), sprintf('a%02d.csv',i))
end % 動作確認用サンプルCSVファイルa01.csv,a02.csv,a03.csv…を10個作成
ttds = tabularTextDatastore(pwd); % 上記ファイルをデータストアに登録
tds = transform(ttds, @myProcessFunction); % 変換(1列*2列⇒3列)
writeall(tds,pwd,'OutputFormat','csv','FilenameSuffix','mod'); % データストアをファイルに書き出す
% ls * % 結果確認用 カレントフォルダ直下にフォルダが作成され、内部に新たなCSVファイル群が出力される
% a = dir; cd (a(end).name); type a01mod.csv % 結果確認用
function x = myProcessFunction(x)
x.Var3 = x.Var1 .* x.Var2; % 変換(1列*2列⇒3列)
end
  1 个评论
かお
かお 2023-10-5
ありがとうございます!
完全に知らない方法でした。

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Statistics and Machine Learning Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!