MATLAB 收集时间数据

MATLAB collecting time data

我有以下数据,'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.002 块中收集 0<=d<0.0020.002<=d<0.004 等范围内的值,直到达到 0.1.

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

您可以使用 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

等等