cell内に格納された時系列データの平均値を算出するにはどうすればいいですか?
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Kohei Yoshino
el 22 de Abr. de 2024
Comentada: Kohei Yoshino
el 23 de Abr. de 2024
以下のcellデータの時系列の平均を算出したいと考えています。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1676161/image.png)
↓
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1676166/image.png)
それぞれの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 comentarios
Respuesta aceptada
Kojiro Saito
el 23 de Abr. de 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
Más respuestas (0)
Ver también
Categorías
Más información sobre Text Data Preparation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!