找到数组中元素之间平均差异的有效方法

时间:2011-03-01 20:34:28

标签: matlab

希望头衔并不令人困惑。通过示例展示很简单。我有一个行向量,如:[1 5 6]。我想找到每个元素之间的平均差异。此示例中的差异为4和1,因此平均值为2.5。这是一个小例子。我的行向量可能非常大。我是MatLab的新手,那么使用MATLAB高效的矩阵/数组操作有一些有效的方法来做到这一点吗?

SOF上也有类似的问题,但这个问题专门针对MATLAB!

谢谢:)

编辑:正如@gnovice所询问,我想要绝对的差异。

3 个答案:

答案 0 :(得分:8)

使用 diff 的简单解决方案

aveDiff = mean(diff(myVector))     %#(1)

实施例

>> v=[1 5 6]
v =
     1     5     6
>> mean(diff(v))
ans =
    2.5000

这有效但@Jonas的答案是正确的解决方案。


修改

来自@gnovice,@ vivid-colors和@sevenless评论。

通过将 abs 插入(1)

可以找到差值绝对值的平均值
aveDiff = mean(abs(diff(myVector)))     %#(2)

答案 1 :(得分:4)

如果您有一个数组array,那么平均差异为

(array(end) - array(1))/(length(array)-1)

因为diff(array)array = [a b c d][b-a c-b d-c]。平均值为(b-a+c-b+d-c)/3,简化为(d-a)/3

在你的例子中

array = [1 5 6];

(array(end)-array(1))/2 

ans =
2.5

答案 2 :(得分:0)

如果X是你的向量,你可以做

mean( X(2:end) - X(1:end-1) )