2013-06-05 64 views
0

輸入數據目前IM kissFFT ..如何將std :: vector <short>&samples2轉換爲kiss_fft_scalar *樣本?

我曾在STD輸入數據:: vector的& samples2我想轉換成由KissFFT要求的格式..

我使用下面的代碼轉換這個,,

但最終我得到的DIFF值請幫助..

這裏是我的代碼

ShortBuffer *pBuffer1 = pData->AsShortBufferN(); 

    std::vector<short> input(pBuffer1->GetPointer(), 
      pBuffer1->GetPointer() + BUFFER_SIZE); 

    kiss_fft_scalar* samples = (kiss_fft_scalar*) &input[0]; // Here my input data is change 

請幫助

+1

用於'kiss_fft_scalar'默認類型是一個'float'。將'short'類型的數組轉換爲'float'類型是行不通的。將'kiss_fft_scalar'改爲'short'類型,使用'std :: vector '或分配一個'kiss_fft_scalar'數組並複製這些值。那些是你的選擇。 –

+0

現在它的工作對我來說..但我面臨另一個問題,當我將這個輸入數據應用到FFT。 FFT輸出返回nan輸出。你有螞蟻的想法嗎? –

+1

是的,閱讀手冊,讓你知道你在做什麼。 –

回答

0

kiss_fft_scalar可能會浮動,總之,INT32或__m128。它取決於FIXED_POINT和USE_SIMD的相同預處理器 定義。檢查類型kiss_fft_scalar是短。

你的編譯器可以幫你 - 不使用Ç投:的 'kiss_fft_scalar' 是浮動

kiss_fft_scalar* samples = &input[0]; // type of &input[0] must be kiss_fft_scalar* !!! 
+0

感謝它的作品.. –

+0

你對KissFFT有什麼更多的想法..其實我正面臨着一些問題... –

+0

@Sunnyshah kissFFT適合我。閱讀手冊。 README文件中有一個簡短的例子。有測試和工具目錄。 – SergV

相關問題