1

各行に重複しないイベントの開始時間とオフセット時間が含まれるという名前のMx2マトリックスがあります。eventsイベント時間なしで含まれるすべてのポイントに対して1に等しい連続サンプル信号を作成したいと思います。信号をサンプリングしたいタイムスタンプを知っています。

たとえば、2つの変数eventTimests

eventTimes = ...
[1 3;
 6 7;
 9 10];

ts = 1:10;

結果のバイナリ信号は次のようになります

binarySignal = [1 1 1 0 0 1 1 0 1 1];

現在、無名関数とクロージャを使用してこの問題を解決していますが、非常に大きなデータセットでは時間がかかります。

tmpFun = @(x) (x>=eventsTimes(:,1) & x<eventTimes(:,2));
binarySignal = cell2mat( arrayfun(tmpFun, ts, 'UniformOutput', 0) );
binarySignal = sum(binarySignal);
4

1 に答える 1

3

適切なオフセットで、最初の列を1に、2番目の列を-1に変換します。その後、cumsum。

%% something like 
ts(eventTimes(:,1))=1; ts(eventTimes(:,2)+1)=-1; ts=cumsum(ts);
于 2013-01-03T20:42:39.083 に答える