Simulating events of varying duration
2 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Andrei Bobrov
2013 年 2 月 7 日
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);
その他の回答 (3 件)
Brian B
2013 年 2 月 7 日
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 件のコメント
Brian B
2013 年 2 月 7 日
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
2013 年 2 月 4 日
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 件のコメント
Youssef Khmou
2013 年 2 月 5 日
編集済み: Youssef Khmou
2013 年 2 月 5 日
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,
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!