操纵清单

时间:2012-07-11 15:42:54

标签: c#

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

列表是一维长度= N称为“噪音”。

我想在m = N -5*tdelay1n = 6中创建一个MxN矩阵。当代码符合时,它会显示错误:

  

索引超出了数组的范围。

代码如下:

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];
}

我不确定为什么会这样,作为一个刚接触编程的人。如果有经验的人能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果MxN数组的N维度为6,则[i, 6]将超出界限。数组的编号从0开始,而不是1。

答案 1 :(得分:1)

可能是

的结果
int col5 = i + 5 * tdelay1

大于噪音维度

请显示用于tdelay1的测试值,我假设lengthnoise的维度? (N ==长度)

并且,请记住,数组的索引从零开始到lenght-1。 (正如@Mykroft在答案中所说)