如何解决使用Intel Performance Primitives FFT函数ippsConjPack_64fc,为什么输出大小与输入大小相同?
我正在使用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 举报,一经查实,本站将立刻删除。