1
$\begingroup$

My neurology experiment has a spike detector outputting 40 sample long spike waveforms.

I'm using a dictionary method for sorting the spikes in real time. To obtain the dictionary at start of program, I want to use all the spikes detected in the first 30 seconds and perform an SVD of the Nx40 matrix, where N is the number of spikes detected in the first 30 seconds.

Is there an algorithm which can perform this Nx40 SVD in a sequential or iterative method or perhaps in smaller batches. The expected spiking rate means my program cannot store all the 30s worth of spike waveforms (rows of the matrix) in memory.

$\endgroup$
5
  • $\begingroup$ How big is $N$? How much memory do you have? $\endgroup$ May 15, 2014 at 2:33
  • $\begingroup$ N is likely to be in the range of 300-500. I'm running this on an 64 bit Ubuntu machine with 8GB of RAM, the modules are in C++. $\endgroup$
    – ankit
    May 15, 2014 at 2:36
  • 1
    $\begingroup$ You're running out of memory trying to find the SVD of a 500 by 40 matrix? That's absurdly small to be running out of memory. $\endgroup$ May 15, 2014 at 2:48
  • $\begingroup$ Sorry, I forget to mention it is a multielectrode situation. 18 tetrodes = 18x4 = 72 such SVDs. $\endgroup$
    – ankit
    May 15, 2014 at 13:44
  • 1
    $\begingroup$ OK, so you actually have a matrix of size 500 by (40 times 18 time 4). That's a matrix of size 500 by 2880. This is still very small. $\endgroup$ May 15, 2014 at 14:06

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.