你好,
我有一个包含一些数据的 int 数组。该阵列从 4 通道设备收集数据。 每秒按设备数组填充如下:(数据收集约 200000 个数字)
int[] data = new data[]{1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,...};
//data[0] received from Channel 0
//data[1] received from Channel 1
//data[2] received from Channel 2
//data[3] received from Channel 3
//data[4] received from Channel 0
//data[5] received from Channel 1
//data[6] received from Channel 2
//data[7] received from Channel 3
// to end...
并结束。每一秒之后我都必须分离通道的数据进行处理。 为了分离每个通道,我使用以下代码:
double[] ai1 = new double[data.Length/4];
double[] ai2 = new double[data.Length/4];
double[] ai3 = new double[data.Length/4];
double[] ai4 = new double[data.Length/4];
for (int i = 0; i < data.Length/4; i++)
{
ai1[i] = data[i * 4 + 0];
ai2[i] = data[i * 4 + 1];
ai3[i] = data[i * 4 + 2];
ai4[i] = data[i * 4 + 3];
}
有什么快速的方法可以将该数组分成四个子数组吗?
谢谢。
更新:----------------
我使用“Parallel.For”,在我的计算机上大约需要 0.02ms。 但如果我使用简单的“for”,大约需要0.001ms!
double[] ai1 = new double[data.Length / 4];
double[] ai2 = new double[data.Length / 4];
double[] ai3 = new double[data.Length / 4];
double[] ai4 = new double[data.Length / 4];
Parallel.For(0, data.Length / 4, i =>
{
ai1[i] = data[i * 4 + 0];
ai2[i] = data[i * 4 + 1];
ai3[i] = data[i * 4 + 2];
ai4[i] = data[i * 4 + 3];
});
真的有必要获取第一个数组中的数据吗?因为如果没有,您可以首先使用 4 个单独的数组来获取数据,这样您就不必每秒循环每个数据。