C# 操纵列表

C# 操纵列表,c#,C#,我已经编写了一个代码来处理时间序列数据的内容,并将其输出到新创建的矩阵中。这使我能够为时间序列数据构建相空间 该列表是长度为N的一维,称为“噪波” 我想创建一个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++)

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

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

我想创建一个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];
}
float[,]phaseSpace6=新的float[(长度-5*tdelay1-1),m];
对于(int i=0;i<(长度-5*t长度1-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;
相位空间6[i,1]=噪声[i];
相位空间6[i,2]=噪声[col1];
相位空间6[i,3]=噪声[col2];
相位空间6[i,4]=噪声[col3];
相位空间6[i,5]=噪声[col4];
相位空间6[i,6]=噪声[col5];
}
作为一个编程新手,我不知道为什么会发生这种情况。如果有经验的人能帮助我,我将不胜感激。

可能是

int col5 = i + 5 * tdelay1
大于噪声维度

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


记住,数组的索引从0开始到lenght-1。(正如@Mykroft在其回答中所说的)

如果您的MxN数组的N维如前所述为6,那么
[i,6]
将超出范围。数组的编号从0开始,而不是从1开始。

为什么不直接使用
phaseSpace6.GetLength(0)
phaseSpace6.GetLength(1)
?我不得不否决这个问题,因为我在这个问题上缺乏努力。