我有以下数据,' d'
0.0012
0.0043
0.0034
0.0108
0.0042
0.0052
0.0516
0.0034
0.0023
.... and so on
我知道这次的数据范围是0-0.1
。
将此无序数据分组到时间范围的最佳方法是什么。
我希望在0<=d<0.002
块中收集0.002<=d<0.004
,0.002
等范围内的值,直到我到达0.1
。
答案 0 :(得分:4)
您可以使用accumarray
:
step = .002;
limit = .1;
result = accumarray(1+floor(d(:)/step), d(:), [1+floor(limit/step), 1], @(x) {x});
在你的例子中,这给出了
>> result{1}
ans =
0.0012
>> result{2}
ans =
0.0034
0.0034
0.0023
等
答案 1 :(得分:2)
range = 0:0.002:0.1;
results = cell(numel(range)-1,1);
for ii = 1:numel(range)-1
tmp = d>range(ii) & d<range(ii+1);
results{ii} = d(tmp);
end
我初始化了一个range
数组,其中包含您的范围说明符。 tmp
然后包含您范围内位置的逻辑索引,这些索引将被提取并存储在下一行中。请注意,我使用了单元格,因为不能保证每个范围都有相同的点数。