cell内に格納された時系列データの平均値を算出するにはどうすればいいですか?
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Kohei Yoshino
am 22 Apr. 2024
Kommentiert: Kohei Yoshino
am 23 Apr. 2024
以下のcellデータの時系列の平均を算出したいと考えています。
↓
それぞれのcellに格納された変数のうち(:,6)の列を32個抽出して行平均を出したいと考え以下のコードを作成しましたが、meandataが32列目のデータしか格納されません。いい方法はありませんでしょうか?
data = cell(1, length(A.Pelvic)) % Aに格納されているPelvicという変数を参照
for i = 1:length(A.Pelvic)
data{i} = A.Pelvic{i}(:,6);
meandata = arrayfun(@mean, data{i}); % cellfunだと変数が'double'なので実行できないというエラーが出るためarrayfunを使用
end
for n = 1:length(A.Pelvic);
plot(A.Pelvic{n}(:,6), 'b')
hold on
plot(meandata, 'r'); % dataをあらかじめ作成し、そこにmeandataを格納するつもりでしたが、meandataが全体の平均ではなくA.Pelvicの最後の列のみが反映されており平均できていない
end
0 Kommentare
Akzeptierte Antwort
Kojiro Saito
am 23 Apr. 2024
meandataが32列目のデータしか格納されないのは、for ループの meandata = arrayfun(@mean, data{i}); で同じ変数名で上書きされているので、最後のループのi=32だけが格納されているためです。
forループを使わないでcellfunで一度で格納できます。
meandata = cellfun(@(x) mean(x(:,6)), A.Pelvic); % 1x32 double
for n = 1:length(A.Pelvic)
figure;
plot(A.Pelvic{n}(:,6), 'b')
hold on
%plot(meandata, 'r');
yline(meandata(n), 'r');
hold off
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu ビッグ データの処理 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!