我的班級正在接收一個複雜浮點的向量,但數據流數據包的數據必須儘可能短。我的解決方案是首先將數據轉換爲short,然後將其批量轉換爲數據包併發送。什麼是轉換這些數據的最佳方法?有沒有一種優雅的方式將矢量<complex <float>>轉換爲矢量<short>?
的複雜的數據應映射到兩個單獨的變量,例如:vcfSampleData[0].real()
- >m_pData[0]
,和vcfSampleData[0].imag()
- >m_pData[1]
等。
void cPXGFtoWaveBase::BufferSampleData(const std::vector<std::complex<float>>& vcfSampleData, const float& fTotalGain_dB, const cFrequency& CentreFrequency, const cBandwidth& cBandwidth, const cTimeStamp& tCaptureTime, const cSampleRate& SampleRate)
{
sBufferData* pWriteElement = m_SampleBuffer.GetWriteElement();
if(pWriteElement != nullptr) {
std::copy(vcfSampleData.begin(), vcfSampleData.end(), pWriteElement->m_pData); //vector<comlex<float>> must become vector<complex<short>> or vector<short>
//other irrelevant stuff here
m_SampleBuffer.CommitWriteElement();
}
}
爲了幫助與技術(語法)部分,我們首先需要了解一個'std :: complex'映射到您的域中的一個或多個'short's。你想如何使用短整數來表示來自兩個浮點數的信息? –
Angew
使用'std :: transform' – fnc12
數據流只需要是二進制數據流。您可以將內存原樣複製到您的流 –