MATLAB 基礎 データ解析移動ウィンドウの操作(3/7) 移動平均 追加の練習
3 views (last 30 days)
Show older comments
データの端点付近で移動平均の曲線の形状が変化しているのがわかります。17 点のウィンドウには現在の点の両側に 8 点必要です。最初と最後の 8 つのデータ点では、関数 movmeanによって既定で必要に応じてウィンドウが短縮されます。オプションのパラメーター 'Endpoints' を指定することで、この動作を変更できます。17 点のウィンドウ全体を埋めるため、ゼロでウィンドウを埋めるか、端点に近すぎる値を破棄してみてください。
こちらの問題の,movmeanの 'Endpoints' のパラメーターの指定で,ゼロでウィンドウを埋めるとはどういう操作でしょうか?
0 Comments
Accepted Answer
Hernia Baby
on 15 Oct 2021
Edited: Hernia Baby
on 18 Oct 2021
【編集済】movmeanと'Endpoints'について
■端点で起きていること
movmean のリンクからやりましょう
A = [4 8 6 -1 -2 -3 -1 3 4 5];
size(A)
上記では1行10列のAがあります
これを窓のサイズ 3 で移動平均をかけます
B=movmean(A,3)
これは3つずつ数字を取りながら、その平均をとっています
説明には以下のような注意書きがあります
k が奇数である場合、ウィンドウは現在位置にある要素を中心にして配置されます。
k が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。
これは窓のサイズが 3 であると 中心の2番目 を窓の中心として動かすという意味です
この時端点では、真ん中2番目が中心なので1番目が空白になります
つまり
b1 = □ 4 8
b2 = 4 8 6
b3 = 8 6 -1
…
b10 = 4 5 □
のように抽出されて端点では
B(1) = (4 + 8) / 2 = 6
B(10) = (4 + 5) / 2 = 4.5
となってしまいます
disp(sprintf('B_1 = %G\nB_10 = %G',B(1),B(10)))
窓の大きさが3くらいだったらいいのですが、
17点の窓だと中心が9なので、8点分の空欄ができてしまいますね
(y1+y2+・・・y17)/17 と (y1+y2+・・・y9)/9では平均の取り方がだいぶ違います
■'Endpoints'について
これをなくすためにはどうすべきか?
ここでで'Endpoints'の登場です
'discard'は空欄を平均したもの、つまりB(1)とB(10)を消去しします
M = movmean(A,3,'Endpoints','discard')
ゼロで埋める場合は
M = movmean(A,3,'Endpoints',0)
1 で埋める場合は
M = movmean(A,3,'Endpoints',1)
3 Comments
More Answers (0)
See Also
Categories
Find more on Shifting and Sorting Matrices 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!