MATLAB收集时间数据

时间:2015-09-30 12:08:22

标签: arrays matlab time range

我有以下数据,' 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.0040.002等范围内的值,直到我到达0.1

2 个答案:

答案 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然后包含您范围内位置的逻辑索引,这些索引将被提取并存储在下一行中。请注意,我使用了单元格,因为不能保证每个范围都有相同的点数。

相关问题