We often have two signals with different sampling rates that we want to correlate. One example is when we want to correlate local field potential (LFP) activity of a neural signal to some average spike rate of a neuron. Our LFP signal is recorded at 24 kHz, but the spike density estimate (SDE) we create from individual spike timestamps is given an artificial sampling rate of 1 kHz. End-to-end, the LFP and SDE are potentially correlated, but to operate on those as variables in MATLAB they need to be the same length.
In this function, we use 1-D interpolation to force
d1 data into the length of
d2 and call that
d1new. Ideally, your
d2 data has the higher sampling rate so that
d1 is being ‘upsampled’ instead of ‘downsampled’.
Consider two signals (
f is either
cos() and the time variable
t is 0-100s, but each
t has a different sampling rate.
t1 = linspace(0,100,100); % 0-100s, 100 points, 'low' sampling rate
t2 = linspace(0,100,400); % 0-100s, 400 points, 'high' sampling rate
d1 = sin(t1);
d2 = cos(t2);
d1new = equalVectors(d1,d2);
The top plot shows the signals overlaid in Time with each point from
t marked in black. The middle plot highlights that when plotted by Samples, the two signals are unequal in size. The bottom plot shows how 1-D interpolation through
equalVectors and the
d1new variable equalize the vector lengths, thereby making a correlation possible.