I am collecting 16384 double values from a hardware device using a signal processing library. The 16384 values I receive are the output of a low pass filter. I want to down sa
You are actually getting everything and then drop the unnecessary ones. How about dropping those without copying at first step. I mean rather than using Array.Copy just copy the needed ones like;
int j = bufferCount * 16384;
for (int i = 0; i < 16384; i += 10)
{
realbuffer[j++] = rawData[i];
}
By doing so you will not need to run the loop inside if statement.
If you cannot change the overall structure of you code due to any condition, you can increase the loop performance by a technique that is used in sorting algorithms . Define your array with the size 163840 + 1. Assign some value to the last position of your array such as -1 which will not be inside the received data. And change the loop as follows which decreases the number of comparison in the execution of the loop;
for (int i = 0; i < rawData[i+=10 ] !=-1; )
{
realbuffer[j] = rawData[i];
j++;
}
Hope it helps.