Simulating events of varying duration
2 views (last 30 days)
Show older comments
Hi there, I'm trying to simulate events of varying duration. I start with a vector of onsets (in seconds from the start of the simulated session):
onset=[23 40 67 88] etc
I then generate a list of durations (in seconds - each event is a different duration):
duration=[3 9 2 6]
I can use these to make a vector of offsets, however, what I want to end up with is a vector of all the seconds in which an event is occurring:
all=23 24 25 40 41 42 43 44 45 46 47 48 67 68 88 89 90 91 92 93
I am trying to write a loop that will do this, however can only make it work if all the durations are the same (e.g., 3 seconds). I'm really stuck - any help would be greatly appreciated. Thanks so much, Rebecca
0 Comments
Accepted Answer
Andrei Bobrov
on 7 Feb 2013
st = [23 40 67 88];
du = [3 9 2 6];
m = cumsum(du);
t = m - du + 1;
s = zeros(1,m(end));
s(t) = 1;
ii = cumsum(s);
out = (1:m(end)) - t(ii) + st(ii);
More Answers (3)
Brian B
on 7 Feb 2013
This seems to be what you are looking for:
onset=[23 40 67 88]
duration=[3 9 2 6]
all=cell2mat(arrayfun(@(a,b)a+(1:b)-1,onset,duration,'UniformOutput',0))
2 Comments
Brian B
on 7 Feb 2013
If there is the possibility of overlap between events, you may need to use
all = unique(all)
to sort and remove duplicate entries for instants when multiple events are occurring; of course that depends on your application.
Youssef Khmou
on 4 Feb 2013
An example :
events=zeros(1,1000);
for (t=0:1000)
if mod(t,2)==0
events(t)=a;
elseif mod(t,3)==0
events(t)=b;
elseif mod(t,7)==0
events(t)=c;
.....
end
with constants a,b,c, the onsets .
is that OK?
5 Comments
Youssef Khmou
on 5 Feb 2013
Edited: Youssef Khmou
on 5 Feb 2013
i need more details about your simulation, if you post the problem as it should be, it will be easy to solve it, how the events take place, randomly? give simple example from your code so as we can work on it,
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!