Simulating events of varying duration
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 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);
Weitere Antworten (3)
Brian B
am 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 Kommentare
Brian B
am 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
am 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 Kommentare
Youssef Khmou
am 5 Feb. 2013
Bearbeitet: Youssef Khmou
am 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,
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!