-2

我编写了一个代码来操作时间序列数据的内容并输出到一个新创建的矩阵中。这是为了让我能够为时间序列数据构建相空间。

该列表是长度=N 的一维列表,称为“噪声”。

我想创建一个 MxN 矩阵,其中m = N -5*tdelay1n = 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

If the N dimension of your MxN array is 6 as stated then [i, 6] is going to be out of bounds. Numbering for arrays starts at 0 not 1.

于 2012-07-11T15:50:12.173 回答
1

大概是因为

int col5 = i + 5 * tdelay1

大于噪声维度

请显示用于 的测试值tdelay1,我假设这length是 的尺寸noise?(N==长度)

And, remember, the index of the arrays starts from zero to lenght-1. (As @Mykroft said in its answer)

于 2012-07-11T15:46:02.537 回答