連番名のcsvファイルからforループ等を使って標準偏差をもとめたい
1 回表示 (過去 30 日間)
古いコメントを表示
プログラミング初心者です.
①ファイルは:N-1.csv, N-2.csv, N-3.csv, , N-4.csv,, N-5.csv, N-6.csv・・・・N-9.csv
の連番で,すべて29X29の行列です.
②1セットを3枚(N)とし,5セット(cyc)の平均(Dave)と偏差(平均との差),標準偏差を求めようとしています.
③統計処理で対応するファイルは,3枚とびなのでそれぞれ
N-1.csv, N-4.csv, N-7.csv, ・・・1セット目.これに平均・標準偏差の処理をして,29X29の行列Na-1.csv として保存
N-2.csv, N-5.csv, N-8.csv, ・・・2セット目.これに平均・標準偏差の処理をして,29X29の行列Na-2.csv として保存
N-3.csv, N-6.csv, N-9.csv, ・・・3セット目.これに平均・標準偏差の処理をして,29X29の行列Na-3.csv として保存
・・・5セットまで実行します.
④”平均”や標準偏差は行列 要素(mean、std)でなく,同じサイズの複数の行列間 との演算です.
⑤標準偏差は,エクセル関数STDEV.Pに該当するものとします.
平均処理ができたプログラムは以下です.※実際には扱うファイル数が多いため変数を使用して作成しています.
同様に偏差,標準偏差の処理を行いたいのでご教示頂けませんでしょうか.
matlab2013で機能が乏しい場合は2019でも大丈夫です.
宜しくお願い致します.
data = zeros(29,29);
n= N*cyc
for a=1:N % N=3 ...3枚飛びを指定
Dsum=0;
for number = a:N:n
num = num2str(number);
data= xlsread(['絶対パス\N-' num '.csv']);
%1セット分の平均を求める
Dsum = Dsum + data ;
Dave=Dsum/cyc ; %平均
No=num2str(a);
xlswrite(['絶対パス\Na-' No '.csv'],Dave); %CSVファイルとして連番保存
contourf(Dave,200,'LineStyle','none'); %カラーの分布画像にする
end
end
2 件のコメント
採用された回答
Kenta
2020 年 8 月 15 日
clear;clc
cyc=5;
N=3;
n=N*cyc;
for a=1:N % N=3 ...3枚飛びを指定
Dsum = [];
for number = a:N:n
num = num2str(number);
% data= xlsread(['絶対パス\N-' num '.csv']);
data=rand(29); % データがないので乱数で29×29の行列を作成
%1セット分の平均を求める
Dsum = cat(3,Dsum,data);
end
% Dave=Dsum/cyc ; %平均
Dave=mean(Dsum,3);
Dstd=std(Dsum,[],3);
% No=num2str(a);
% xlswrite(['絶対パス\Na-' No '.csv'],Dave); %CSVファイルとして連番保存
% contourf(Dave,200,'LineStyle','none'); %カラーの分布画像にする
end
こんにちは、少しコードを修正しました。5セット分繰り返すのならはじめのfor a=1:Nは、for a=1:cycな気がしますがいかがでしょうか?ひとまずそのままにしています。ただ、
- N-1.csv, N-4.csv, N-7.csv, ・・・1セット目.これに平均・標準偏差の処理をして,29X29の行列Na-1.csv として保存
- N-2.csv, N-5.csv, N-8.csv, ・・・2セット目.これに平均・標準偏差の処理をして,29X29の行列Na-2.csv として保存
- N-3.csv, N-6.csv, N-9.csv, ・・・3セット目.これに平均・標準偏差の処理をして,29X29の行列Na-3.csv として保存
とありますが、これを5セット繰り返すと例えば、N-7は、2度使われますが大丈夫なのでしょうか?
Daveも、奥行方向(Z方向)にデータを重ねて、最後にチャンネル方向に平均(または標準偏差)の計算をしました。あまり、質問の条件を汲み取れてないかもしれませんので、適宜変更を加えてください。
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!