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

Count occurrences and stretch array in matlab

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

我现在想把这个向量转换成下面的形式

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

这基本上是一个楼梯图。

说明

输入向量用于沿 x 轴绘制数据点。因此,y 轴由 1:length(input) 提供。因此,生成的图显示了沿 y 轴的数据点的累积数量和沿 x 轴的发生时间。

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

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

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

没有拉近我。

可以用bsfxun来完成,如下:

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

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