希望头衔并不令人困惑。通过示例展示很简单。我有一个行向量,如:[1 5 6]
。我想找到每个元素之间的平均差异。此示例中的差异为4和1,因此平均值为2.5。这是一个小例子。我的行向量可能非常大。我是MatLab的新手,那么使用MATLAB高效的矩阵/数组操作有一些有效的方法来做到这一点吗?
SOF上也有类似的问题,但这个问题专门针对MATLAB!
谢谢:)
编辑:正如@gnovice所询问,我想要绝对的差异。
答案 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) )