public static ComplexSignal Combine(params ComplexSignal[] signals)
{
// Compute common data
int length = 0;
int nchannels = signals[0].Channels;
int sampleRate = signals[0].SampleRate;
// Compute final length
for (int i = 0; i < signals.Length; i++)
{
length += signals[i].Length;
}
// create channels
ComplexSignal result = new ComplexSignal(nchannels, length, sampleRate);
int pos = 0;
foreach (ComplexSignal signal in signals)
{
Buffer.BlockCopy(signal.RawData, 0, result.RawData, pos, result.RawData.Length);
pos += signal.RawData.Length;
}
return result;
}