掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
データの平均値の計算について (ID:88486)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> ねろさん > ガッさんありがとう。 > 私が書きたかったことがちゃんとフローになってる。(^^ レスありが㌧←ぁ>(´Д`;) ちょと気になって考えてみすたが、これで合っていますた? 中心cntの移動平均の値がちゃんと出るか確認してないので不安です; @リングバッファを使うより、↓の感じがいいかもしれません。 ※日本語で説明するよりコードの方がおいしかったです(orz Sub calc_MovingAverage_A(ByRef buf() As Long) Dim sum As Long Dim buf_LB As Long Dim buf_UB As Long Dim Last_Out_Index As Long Dim First_In_Index As Long buf_LB = LBound(buf) buf_UB = UBound(buf) Last_Out_Index = buf_LB - 20 '遅い For First_In_Index = buf_LB To buf_UB '一つ追加 sum = sum + buf(First_In_Index) If Last_Out_Index > buf_LB Then '一つ削除 sum = sum - buf(Last_Out_Index) End If Last_Out_Index = Last_Out_Index + 1 Next End Sub Sub calc_MovingAverage_B(ByRef buf() As Long) Dim sum As Long Dim buf_LB As Long Dim buf_UB As Long Dim Last_Out_Index As Long Dim First_In_Index As Long buf_LB = LBound(buf) buf_UB = UBound(buf) 'Last_Out_Index = buf_LB - 20 '速い?(calc_MovingAverage_Aを改変) '※境界があやふやなので、少ないデータでテストしてみてください(orz For First_In_Index = buf_LB To 20 sum = sum + buf(First_In_Index) Debug.Print "中心 "; First_In_Index; "の移動平均は"; sum * 0.05 Next Last_Out_Index = buf_LB For First_In_Index = buf_LB + 21 To buf_UB '"+ 21"でいいのか…? '一つ追加 sum = sum + buf(First_In_Index) '一つ削除 sum = sum - buf(Last_Out_Index) Last_Out_Index = Last_Out_Index + 1 Debug.Print "中心 "; First_In_Index; "の移動平均は"; sum * 0.05 Next End Sub 長くてスマソ…激しくバグ潜在の(゜∀゜)ヨカーン
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.