微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Intel Performance Primitives FFT函数ippsConjPack_64fc,为什么输出大小与输入大小相同?

如何解决使用Intel Performance Primitives FFT函数ippsConjPack_64fc,为什么输出大小与输入大小相同?

我正在使用ippsFFTFwd_RToPack_64f(pSrc.data(),pDst.data(),pSpec64,pBuffer)进行前向FFT,它将waveformlen元素写入pDstpSrc.size() == waveformlen)。

然后,我尝试使用pDstippsConjPack_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 举报,一经查实,本站将立刻删除。