MATLAB Answers

Insert zeros in a vector - Random

14 views (last 30 days)
Abhilash
Abhilash on 3 May 2011
Commented: Abhilash on 13 Sep 2020
Hi guys,
So I have this vector with 182 elements that show me timings of a neuron's spiking activity. Each element corresponds to a time point, for e.g. 672 where 672 is in ms.
My timeline is 10s or 10000 ms.
What I need to generate is a vector with 10000 elements, where there are 1s at the times corresponding to the spike-timing matrix and 0s everywhere else.
The code I wrote shows me only one 1, that too at the last time point. Here is what I wrote -
spikes = zeros(1,length(time));
s = SpikeTimes*10;
for j = 1:length(SpikeTimes)
for i = 1:length(spikes)
if s(j) ~= i
spikes(i) = 0;
else
spikes(i) = 1;
end
end
end
Could anyone please help me out? Thanks.
I need to further use the generated spikes vector to calculate firing rate using binning, a rectangular window, a gaussian window and compare and discuss the results.

  0 Comments

Sign in to comment.

Accepted Answer

Matt Tearle
Matt Tearle on 3 May 2011
Perhaps I misunderstand, but you should be able to do simply:
spikes(SpikeTimes*10) = 1;
Example:
x = [1 2 7 14 17]
y = zeros(1,20);
y(x) = 1

  6 Comments

Show 3 older comments
Abhilash
Abhilash on 3 May 2011
Yes. It has timings starting at 672 and ending at 8606
Matt Tearle
Matt Tearle on 3 May 2011
OK so:
spikes = zeros(...)
spikes(SpikeTimes) = 1;

Sign in to comment.

More Answers (1)

Dimithra Anton
Dimithra Anton on 13 Sep 2020
spikes = zeros(1,length(time));
spikes = zeros(1,length(time))

  2 Comments

Adam Danz
Adam Danz on 13 Sep 2020
spike = zeros(size(time));
to maintain the same shape.
Also avoid using length() since you never know what dimension it will return if your data aren't a vector. Instead, use
spike = zeros(1,numel(time));
Abhilash
Abhilash on 13 Sep 2020
Wow this was 9 years ago!

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!