C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

このエラーを解消したいです。 [1]

[トピック内 29 記事 (21 - 29 表示)]  << 0 | 1 >>

■102924 / inTopicNo.21)  Re[5]: このエラーを解消したいです。
  
□投稿者/ みか (9回)-(2024/02/03(Sat) 21:44:59)
No102923 (ビール呑み さん) に返信

> 「For i = 0 To UBound(y)」としているのですから、yのインデックスに「i + j」を指定したら範囲外になるはずです
>
> みかさんは、yのインデックスには何を指定したらいいと思いますか?

まだよくは分かっていませんが、これがSavitzky-Golayフィルターを適用したものになってるか、です。
Copilotで聞いてみても答えが得られませんでした。

引用返信 編集キー/
■102925 / inTopicNo.22)  Re[4]: このエラーを解消したいです。
□投稿者/ kiku (408回)-(2024/02/05(Mon) 09:17:47)
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

※だいぶ前の返答で記述しましたが、計算したい式を明確にしましょう。
 それがないかと、正しいか判断できません。

引用返信 編集キー/
■102926 / inTopicNo.23)  Re[5]: このエラーを解消したいです。
□投稿者/ kiku (409回)-(2024/02/05(Mon) 10:42:24)
No102925 (kiku さん) に返信
> ■No102922 (みか さん) に返信
>>2024/02/02(Fri) 20:41:44 編集(投稿者)
>>
>>■No102920 (kiku さん) に返信
> If (0 <= (i + j) And (i + j) <= 100) Then
> sum = sum + w(N + j, k) * y(i + j)
> End If

下記の方が良かった。
If (0 <= (i + j) And (i + j) <= UBound(y)) Then
sum = sum + w(N + j, k) * y(i + j)
End If

引用返信 編集キー/
■102930 / inTopicNo.24)  Re[6]: このエラーを解消したいです。
□投稿者/ みか (10回)-(2024/02/05(Mon) 20:14:07)
No102926 (kiku さん) に返信

> 下記の方が良かった。
> If (0 <= (i + j) And (i + j) <= UBound(y)) Then
> sum = sum + w(N + j, k) * y(i + j)
> End If

エラーが出なくなったら答えも合うかと思ってたのですが安易過ぎたようです。
すみません。

引用返信 編集キー/
■102932 / inTopicNo.25)  Re[7]: このエラーを解消したいです。
□投稿者/ kiku (410回)-(2024/02/06(Tue) 08:44:15)
No102930 (みか さん) に返信
> ■No102926 (kiku さん) に返信
>
> エラーが出なくなったら答えも合うかと思ってたのですが安易過ぎたようです。
> すみません。

結果が何かと一致しなかったということですね。
やはり、計算式を提示する必要があると思います。

比較対象は何と比較しているのでしょうか?
これも何かのプログラムでしょうか?

Savitzky-Golayフィルターに関しては
詳しくないので何とも言えませんが
次数によっても係数がかわるようですし、
そもそもパラメータの違うものを比較している
なんてことも考えられます。
引用返信 編集キー/
■102934 / inTopicNo.26)  Re[8]: このエラーを解消したいです。
□投稿者/ kiku (411回)-(2024/02/06(Tue) 10:04:41)
No102932 (kiku さん) に返信
> ■No102930 (みか さん) に返信
>>■No102926 (kiku さん) に返信
>>
>>エラーが出なくなったら答えも合うかと思ってたのですが安易過ぎたようです。
>>すみません。

そもそも目的は何でしょうか?
1.数値として目標とする何かと完全に一致させたい。
2.数値は平均化させたい。
3.その他

上記1であるならば、計算式を明確化する必要があると思います。
これがないと先に進めようがないです。

上記2であるならば、すでに実現できているのではないでしょうか?
また、平均化させたいのであるならば、
Savitzky-Golayフィルターでなくても良いので
別の平均化の方法を使っても良いと思います。

目的を明確にすることをお勧めします。
引用返信 編集キー/
■102940 / inTopicNo.27)  Re[9]: このエラーを解消したいです。
□投稿者/ みか (11回)-(2024/02/06(Tue) 22:41:44)
2024/02/07(Wed) 00:54:29 編集(投稿者)
No102934 (kiku さん) に返信

> Savitzky-Golayフィルターでなくても良いので
> 別の平均化の方法を使っても良いと思います。
> 
> 目的を明確にすることをお勧めします。

性能の良いのが欲しいので、Savitzky-Golayフィルターに拘ってるとこがあります。
すみません。
一旦解決済みにして出直します。

解決済み
引用返信 編集キー/
■102941 / inTopicNo.28)  Re[10]: このエラーを解消したいです。
□投稿者/ kiku (412回)-(2024/02/07(Wed) 13:46:00)
No102940 (みか さん) に返信
> 2024/02/07(Wed) 00:54:29 編集(投稿者)
> 性能の良いのが欲しいので、Savitzky-Golayフィルターに拘ってるとこがあります。

ちょっと検索しただけですが
Savitzky-Golay フィルターは
高周波数信号成分を維持するには効果的ですが、
ノイズの除去には優れていないようです。

求める性能がどんなものかわかりませんが、
例えばノイズ除去が目的とするならば
Savitzky-Golay フィルターは
優れていないため、
別のフィルターを選択することを考えることに
なると思われます。

再考にあたっては、このことも
考慮してみてはどうでしょう。

解決済み
引用返信 編集キー/
■102943 / inTopicNo.29)  Re[11]: このエラーを解消したいです。
□投稿者/ みか (12回)-(2024/02/07(Wed) 19:38:26)
No102941 (kiku さん) に返信

> 再考にあたっては、このことも
> 考慮してみてはどうでしょう。
何が良いかはまだ良く分かっていません。
とりあえずは 平滑化が出来ればと思っています。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ