cell内に格納された時系列データの平均値を算出するにはどうすればいいですか?
14 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Kohei Yoshino
le 22 Avr 2024
Commenté : Kohei Yoshino
le 23 Avr 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 commentaires
Réponse acceptée
Kojiro Saito
le 23 Avr 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
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur ビッグ データの処理 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!