Count the appearances of each value per bin within a vector of 144 bins.
1 回表示 (過去 30 日間)
古いコメントを表示
Carlos Goncalves Moreira
2018 年 7 月 20 日
コメント済み: Carlos Goncalves Moreira
2018 年 7 月 20 日
I have a vector of 21600 values between [-3;2]. I want to divide this vector in 150-value bins and count how many times each value occurs within each bin.
Ideally I would get a matrix 144*6, with columns representing the bins and rows showing the number of occurrences of the values (-3, -2, -1, 0, 1, 2) within the each bin. I tried to use histcounts and bincounts, and other similar scripts of MATLAB Community, but I wasn't successful. Thanks a lot!
0 件のコメント
採用された回答
Guillaume
2018 年 7 月 20 日
編集済み: Guillaume
2018 年 7 月 20 日
A method without a loop:
%demo data:
v = randi([-3 2], 1, 21600);
binsize = 150;
assert(mod(numel(v), binsize) == 0, 'number of elements not divisible by binsize')
destrow = repelem(1:numel(v)/binsize, binsize);
result = accumarray([destrow', v' + 4], 1) %v' + 4 gives the destination column for values -3 to 2
その他の回答 (1 件)
Rik
2018 年 7 月 20 日
So you want to split your original vector into 144 vectors, and then get the histcounts of each vector?
data=randi([-3 2],216000,1);
results=zeros(144,6);
for n=1:144
results(n,:)=histcounts(data(((n-1)*150+1):(n*150)),6);
end
参考
カテゴリ
Help Center および File Exchange で Data Distribution Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!