0

I've been using the Accelerate framework to do some audio signal processing and I've been using the vDSP_conv function to perform some cross-correlations. Usually, the values returned look like this (left column is the array index, and right column is the value of the array at that index after being returned from 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

But sometimes the results look like this, for no discernible reason:

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  

I ran the program again after getting these results, and they went back to the original (correct) results. Has anyone else experienced this or have any ideas as to why it's happening?

djikay
  • 10,450
  • 8
  • 41
  • 52

1 Answers1

0

Probably this is some overflow effect in one of the vectors you are correlating. As the specs say "The length of this vector must be at least N + P - 1." So e.g. if you are doing autocorrelation of vector A of length n, you should first create a vector of length 2*n (say A_extended), copy A into that, and do vDSP_conv(A_extended, 1, A, 1, &result, 1, n, n)