从vDSP_conv返回奇怪的结果

时间:2014-07-11 17:23:23

标签: ios objective-c audio accelerate-framework vdsp

我一直在使用Accelerate框架进行一些音频信号处理,我一直在使用vDSP_conv函数来执行一些交叉相关。通常,返回的值如下所示(左列是数组索引,右列是从vDSP_conv返回后该索引处数组的值):

125001  1.576556  
125002  1.523622  
125003  1.439102  
125004  1.593097  
125005  1.171977  
125006  0.020228  
125007  -0.988876  
125008  -1.526720  
125009  -1.056652  
125010  -0.181521  
125011  -0.029592  
125012  0.077848  
125013  0.319371  
125014  0.080034  
125015  -0.629983

但有时结果看起来像这样,没有明显的原因:

125001  65531903404620711577128764702720.000000  
125002  271523249688835947415863891591168.000000  
125003  253191001846134141440285462233088.000000  
125004  197376212065818453160643396632576.000000  
125005  247836891833411757917279954665472.000000  
125006  203601464352748581549908776976384.000000  
125007  193256115501319341596977567629312.000000  
125008  55431884287617507551879029063680.000000  
125009  -242471930502532513482802284462080.000000  
125010  -259877560883016098488551924039680.000000  
125011  -201496656800953613737511541014528.000000  
125012  -240627419186810410707269384667136.000000  
125013  -241660441463967832878539113234432.000000  
125014  -169626548145197368918504628027392.000000  
125015  -157041504634723839288379166425088.000000  

我在获得这些结果后再次运行程序,然后又回到了原始(正确)的结果。有没有其他人经历过这个或有任何关于它为什么会发生的想法?

1 个答案:

答案 0 :(得分:0)

可能这是你正在关联的一个向量中的一些溢出效应。正如specs所说“这个向量的长度必须至少为N + P - 1”。所以例如如果你正在做长度为n的向量A的自相关,你应该首先创建一个长度为2 * n的矢量(比如A_extended),将A复制到那个,然后做 vDSP_conv(A_extended,1,A,1,& result,1,n,n)