MATLAB 基礎 データ解析移動ウィンドウの操作(3/7) 移動平均 追加の練習

조회 수: 7 (최근 30일)
佳奈子 浜口
佳奈子 浜口 2021년 10월 15일
댓글: 佳奈子 浜口 2021년 10월 19일
データの端点付近で移動平均の曲線の形状が変化しているのがわかります。17 点のウィンドウには現在の点の両側に 8 点必要です。最初と最後の 8 つのデータ点では、関数 movmeanによって既定で必要に応じてウィンドウが短縮されます。オプションのパラメーター 'Endpoints' を指定することで、この動作を変更できます。17 点のウィンドウ全体を埋めるため、ゼロでウィンドウを埋めるか、端点に近すぎる値を破棄してみてください。
こちらの問題の,movmeanの 'Endpoints' のパラメーターの指定で,ゼロでウィンドウを埋めるとはどういう操作でしょうか?

채택된 답변

Hernia Baby
Hernia Baby 2021년 10월 15일
편집: Hernia Baby 2021년 10월 18일
【編集済】movmeanと'Endpoints'について
■端点で起きていること
movmean のリンクからやりましょう
A = [4 8 6 -1 -2 -3 -1 3 4 5];
size(A)
ans = 1×2
1 10
上記では1行10列のAがあります
これを窓のサイズ 3 で移動平均をかけます
B=movmean(A,3)
B = 1×10
6.0000 6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000 4.5000
これは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)))
B_1 = 6 B_10 = 4.5
窓の大きさが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 = 1×8
6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000
ゼロで埋める場合は
M = movmean(A,3,'Endpoints',0)
M = 1×10
4.0000 6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000 3.0000
1 で埋める場合は
M = movmean(A,3,'Endpoints',1)
M = 1×10
4.3333 6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000 3.3333
  댓글 수: 3
Hernia Baby
Hernia Baby 2021년 10월 18일
編集しました
ちなみにゼロ埋めする場合は、
xavg = movmean(x,k,'Endpoints',0)
で合っています
佳奈子 浜口
佳奈子 浜口 2021년 10월 19일
本当にありがとうございます!
とてもよくわかりました.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB 入門에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!