让
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));
没有让我更接近。
答案 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
中有多少元素小于或等于该元素。