Using hist3 and sorting

2 ビュー (過去 30 日間)
Michael
Michael 2016 年 1 月 20 日
編集済み: Stephen23 2016 年 1 月 22 日
I'm simulating event positions and times, and histogramming then in the XY plane. I want to find for each event, the time difference to the next event in the same bin. I feel liek this should be a ~4 liner or so...
posXY = rand(nEv,2)
times = rand(nEv,1)
posBin = [2 2]; % put the events on a 2x2 mesh in X-Y plane
[hitMatrix, ~] = hist3(posXY, posBin);
then I want to find (for each event, in a given bin--I made four bins!) the time the next event occurs in that position bin. So i thought about sorting the events by their times, and using the indices to pick out the correct events that also occur in the same bin... making a logical and looping over events.. but I can't quite nail the whole sequence down. Do you have any tips?
I appreciate your input, Michael B.

採用された回答

Stephen23
Stephen23 2016 年 1 月 20 日
編集済み: Stephen23 2016 年 1 月 20 日
The trick is to get the indices from the histogram, but unfortunately hist3 does not return the indices of the input values. Introduced in 2015b is the function histcounts2, which does return these indices. However I do not have 2015b, so I found histcn on FEX, which seems to do what you require.
I tried it like this, is three lines okay?:
nEv = 10;
posXY = rand(nEv,2);
times = rand(nEv,1);
%
[idx,~,~,loc] = histcn(posXY,2,2);
A = accumarray(loc,times,[],@(n){n});
B = cellfun(@(v)diff(sort(v)),A,'UniformOutput',false)
Where B is a cell array where the cells correspond to the bins of the histogram and contain the differences in the sorted times values corresponding to the X and Y values that were sorted into the corresponding bin. The variable A contains the time values themselves, so you can check this by hand if you want.
  4 件のコメント
Guillaume
Guillaume 2016 年 1 月 21 日
+1 about length. That should be purged from every single matlab example and the function deprecated.
Michael
Michael 2016 年 1 月 21 日
Thanks for all your help! I'm still parsing the original solution but your input is very much appreciated (I never looked at length help--thinking I had mastered its use... jeez I feel like a newb now) Again, your time and help are much appreciated!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by