|
■No102922 (みか さん) に返信 > 2024/02/02(Fri) 20:41:44 編集(投稿者) > > ■No102920 (kiku さん) に返信 > >>エラーを解消するだけでしたら、 >>下記に変更すれば良いと思います。 >>Dim w(0 To 2 * N, 0 To M) As Double > > 小出しですみません。 > Copilotで聞いても中々解消しないとこもあります。 > SGFilter関数でSavitzky-Golayフィルターを適用し、入力配列 y8 を平滑化し結果を返すものでした。
> sum = sum + w(N + j, k) * y(i + j) ' ※ 今度はここに「インデックスが配列の境界外です。」 上記のエラーは、y配列の定義を越えてインデックスを指定しているために エラーになっています。
> For i = 0 To UBound(y) iの値は範囲は、上記より0〜100
> For j = -N To N jの値の範囲は、上記より-5〜+5 よって、yのインデックスは、-5〜105となります。
> sum = sum + w(N + j, k) * y(i + j) ' ※ 今度はここに「インデックスが配列の境界外です。」 範囲外の場合にはyの値を0として計算すれば おそらく良いと思いますので、 上記を下記のように修正すれば良いと思います。 If (0 <= (i + j) And (i + j) <= 100) Then sum = sum + w(N + j, k) * y(i + j) End If
※だいぶ前の返答で記述しましたが、計算したい式を明確にしましょう。 それがないかと、正しいか判断できません。
|