要将 IQ 数据保存到 .wav 文件,您可以将 I 分量写入一个通道,将 Q 分量写入另一个通道(参考)。
“同相”(实数)通常放在左声道,“正交”(imag)部分放在右声道。
您可以使用NAudio来实现这一点。首先,您需要BinaryWriter
将int
数组(IQ 数据)转换为Stream
(byte
数组)。然后,您可以使用MultiplexingWaveProvider
创建具有 2 个通道的 .wav 文件。
var iqDataList = device.GetSamplesFromAsyncBuffer(maxCount);
var iStream = new MemoryStream();
var qStream = new MemoryStream();
var iWriter = new BinaryWriter(iStream);
var qWriter = new BinaryWriter(qStream);
foreach (var iqData in iqDataList)
{
iWriter.Write(iqData.I);
qWriter.Write(iqData.Q);
}
var iComponent = new RawSourceWaveStream(iStream, new WaveFormat(rate, bits, 1));
var qComponent = new RawSourceWaveStream(qStream, new WaveFormat(rate, bits, 1));
var waveProvider = new MultiplexingWaveProvider(new IWaveProvider[] {iComponent, qComponent}, 2);
WaveFileWriter.CreateWaveFile(filename, waveProvider);
iComponent.Dispose();
qComponent.Dispose();
iWriter.Dispose();
qWriter.Dispose();