時系列データの統合について
4 views (last 30 days)
Show older comments
時系列データの統合について質問です。
例えば前後方向の重心動揺データのような時系列データをサンプリング周波数100Hzで10秒間×3回取得(10000個の列データ×3つ)したとします。この3つのデータを統合(平均?)して1つの平均的な時系列データを作成したい場合,単純に各時系列ごとの平均(3つをそれぞれ1~10000目までのデータを順に平均して,1000個のデータを作成)をすれば正しいデータとして解釈可能でしょうか?もし違いましたら正しい方法や関数などあれば教えていただきたいです。また3つのデータの長さ(計測時間がそれぞれ違う)が違う場合のデータの統合方法を教えていただきたいです。
0 Comments
Accepted Answer
Hernia Baby
on 6 Oct 2021
Edited: Hernia Baby
on 7 Oct 2021
計測開始時間と刻み幅が同じであれば隣の列と平均すればいいと思います
mean を参照ください
■編集:
データの最後がそれぞれ違うことを気にされてるようなので少し深く書きます
実際にAにNaNを入れて議論してみましょう
A = xlsread('例.xlsx');
今回、1列目の長さが850行まで、3列目の長さが950行までとします
A(850:end,1) = NaN;
A(950:end,3) = NaN;
左3列が845~855行目、右3列が945~955行目として見てみましょう
disp([A(845:855,:) A(945:955,:)])
上記のように途中からNaNになっていることがわかります
これはデータの長さが違うけど、NaNという非数値で埋めてる感じです
----------
図示しつつ平均を取ってみましょう
mean は NaN がある部分は NaNで返す、つまり空欄にする機能がデフォルトになってます
for i = 1:3
plot(A(:,i),':')
hold on
end
A_mean = mean(A,2);
plot(A_mean)
上記のように850行前まで平均を取っています
ですがそれ以降はNaNとなっていて、これを消したい場合があります
size(A_mean)
そもそもAの時点でNaNがある行を消したいよって思うかもしれません
そこでデータ長を合わせる話になります
参考:Aで850行目以降を消す方法
849行でAを切ってみましょう
B = A(1:849,:);
size(B)
もしくは850行目以降を消します
B = A;
B(850:end,:)=[];
size(B)
ただこれをいちいちやってたら面倒ですよね?
NaNを探してその行以降を消して…一発ですっきりしたいと思います
B = rmmissing(A);
size(B)
3 Comments
Hernia Baby
on 7 Oct 2021
編集しましたが、回答します。
1つ目については、その認識であっています。
ただデータサイズ自体は変わらないため、NaNという空欄がついてきます。
2つ目についてはその無駄なものを消したいときの対処法です。
参考以下の部分を見ていただければと思います。
More Answers (0)
See Also
Categories
Find more on データ分布プロット in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!