问题描述
我正在使用ippsFFTFwd_RToPack_64f(pSrc.data(),pDst.data(),pSpec64,pBuffer)
进行前向FFT,它将waveformlen
元素写入pDst
(pSrc.size() == waveformlen
)。
然后,我尝试使用pDst
将ippsConjPack_64fc(pDst.data(),fftResIPP.data(),waveformlen)
转换为复数。我不明白的是为什么输出向量fftResIPP
必须与输入向量pDst
大小相同。
根据format specification,Pack格式是前半部分加上一个FFT仓,列为实值和虚值交替显示,跳过了第一个和最后一个FFT仓的虚值。我知道这使得Pack格式的长度与FFT输入的长度相同。
但是,当将其转换为复数时,我认为结果向量将是Pack向量的(N-2)/2 + 2
倍,因为它将每两个结合成一个复数,除了第一个和最后一个,虚数值为0。
据我了解:
input: [x,x,x] (4 values)
output complex: 0.1+0i,0.5+3i,1+2i,0.3+0i,-0.3-0i,-1-2i,-0.5-3i,-0.1-0i (8 values)
output pack: 0.1,0.3,3,1,2,-0.3 (8 values)
但是,当我尝试将示例包运行到复杂的转换功能,但是长度不同,(waveformlen - 2) / 2 + 2
如此:ippsConjPack_64fc(pDst.data(),(waveformlen - 2) / 2 + 2 )
时,程序崩溃。
在ConjPack page上,将显示Pack格式的不同印象。这次看来Pack格式使用的压缩类型无法立即识别或无法使用(在IPP developer reference中看不到Pack的复杂功能)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)