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

8 vues (au cours des 30 derniers jours)
かお
かお le 28 Sep 2023
Commenté : かお le 5 Oct 2023
まず,a01.csv,a02.csv,a03.csv…のような名前に規則性のある複数ファイルがあります。
例えば,それぞれのファイルの1列目と2列目のデータを一様に掛け算をしたいのですが,いい方法はありますでしょうか?
よろしくお願いします。

Réponse acceptée

Atsushi Ueno
Atsushi Ueno le 28 Sep 2023
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 commentaire
かお
かお le 5 Oct 2023
ありがとうございます!
かなりわかりやすいです。

Connectez-vous pour commenter.

Plus de réponses (1)

Atsushi Ueno
Atsushi Ueno le 28 Sep 2023
データストアを使う方法
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 commentaire
かお
かお le 5 Oct 2023
ありがとうございます!
完全に知らない方法でした。

Connectez-vous pour commenter.

Catégories

En savoir plus sur Statistics and Machine Learning Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!