在matlab中计算出现和拉伸数组

时间:2015-10-14 13:12:23

标签: matlab vector find-occurrences

input = [0 0 0 5 5 7 8 8];

我现在想将此向量转换为

形式
output = [3 3 3 3 5 5 6 8];

这基本上是一个阶梯情节。

解释

输入向量用于绘制沿x轴的数据点。因此,y轴由1:长度(输入)提供。因此得到的图显示了沿y轴的数据点的累积数量和沿x轴出现的时间。

我现在想要针对我的数据集拟合模型。因此,我需要一个向量提供特定时间(x值)的正确值。

所需的输出向量基本上是阶梯图的结果。我正在寻找一种在matlab中生成所需向量的有效方法。

的结果
[x, y] = stairs(input, 1:length(input));

没有让我更接近。

1 个答案:

答案 0 :(得分:2)

可以使用bsfxun完成,如下所示:

x = [0 0 0 5 5 7 8 8];
y = sum(bsxfun(@le, x(:), min(x):max(x)), 1);

对于1:numel(x)中的每个元素,这将计算x中有多少元素小于或等于该元素。