我编写了一个代码来处理时间序列数据的内容并输出到新创建的矩阵中。这是为了让我能够构建时间序列数据的相空间。
列表是一维长度= N称为“噪音”。
我想在m = N -5*tdelay1
和n = 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];
}
我不确定为什么会这样,作为一个刚接触编程的人。如果有经验的人能帮助我,我将不胜感激。
答案 0 :(得分:2)
如果MxN数组的N维度为6,则[i, 6]
将超出界限。数组的编号从0开始,而不是1。
答案 1 :(得分:1)
可能是
的结果int col5 = i + 5 * tdelay1
大于噪音维度
请显示用于tdelay1
的测试值,我假设length
是noise
的维度? (N ==长度)
并且,请记住,数组的索引从零开始到lenght-1。 (正如@Mykroft在答案中所说)