-2

時系列データの内容を操作し、新しく作成されたマトリックスに出力するコードを作成しました。これは、時系列データの位相空間を構築できるようにするためです。

このリストは、「ノイズ」と呼ばれる長さ=Nの1次元です。

とでMxN行列を作成したいと思いm = N -5*tdelay1ますn = 6。コードが準拠すると、エラーが表示されます。

インデックスが配列の範囲外だった。

コードは以下のとおりです。

float[,] phaseSpace6 = new float[(length-5*tdelay1-1), m];
for (int i = 0; i < (length-5* tdelay1-1); i++)
{
    int col1 = i + tdelay1;
    int col2 = i + 2 * tdelay1;
    int col3 = i + 3 * tdelay1;
    int col4 = i + 4 * tdelay1;
    int col5 = i + 5 * tdelay1;
    phaseSpace6[i, 1] = noise[i];
    phaseSpace6[i, 2] = noise[col1];
    phaseSpace6[i, 3] = noise[col2];
    phaseSpace6[i, 4] = noise[col3];
    phaseSpace6[i, 5] = noise[col4];
    phaseSpace6[i, 6] = noise[col5];
}

プログラミングに不慣れな人として、なぜこれが起こっているのかわかりません。経験豊富な方がお手伝いいただければ幸いです。

4

2 に答える 2

2

MxN 配列の N 次元が前述のように 6 の場合、[i, 6]範囲外になります。配列の番号付けは、1 ではなく 0 から始まります。

于 2012-07-11T15:50:12.173 に答える
1

おそらく、

int col5 = i + 5 * tdelay1

ノイズ次元よりも大きい

tdelay1に使用されたテスト値を示してlengthくださいnoise。(N==長さ)

そして、覚えておいてください、配列のインデックスは 0 から length-1 までです。(@Mykroftが答えで言ったように)

于 2012-07-11T15:46:02.537 に答える