public static ComplexSignal FromSignal(Signal signal)
{
if (signal.SampleFormat == SampleFormat.Format32BitIeeeFloat)
{
float[] buffer = new float[signal.Samples];
Marshal.Copy(signal.Data, buffer, 0, buffer.Length);
float[,] data = new float[signal.Length, signal.Channels];
Buffer.BlockCopy(buffer, 0, data, 0, signal.Samples * sizeof(float));
return FromArray(data, signal.SampleRate);
}
else if (signal.SampleFormat == SampleFormat.Format128BitComplex)
{
return new ComplexSignal(signal.RawData, signal.Channels,
signal.Length, signal.SampleRate);
}
else
{
throw new NotSupportedException();
}
}