希望标题不会混淆.通过示例展示很简单.我有一个像这样的行向量:[1 5 6]
.我想找到每个元素之间的平均差异.此示例中的差异为4和1,因此平均值为2.5.这是一个小例子.我的行向量可能非常大.我是MatLab的新手,那么使用MATLAB高效的矩阵/数组操作有一些有效的方法来做到这一点吗?
SOF上也有类似的问题,但这个问题专门针对MATLAB!
谢谢 :)
编辑:正如@gnovice所询问,我想要绝对的差异.
使用diff和mean的简单解决方案
aveDiff = mean(diff(myVector)) %#(1)
Run Code Online (Sandbox Code Playgroud)
例
>> v=[1 5 6]
v =
1 5 6
>> mean(diff(v))
ans =
2.5000
Run Code Online (Sandbox Code Playgroud)
这有效,但@Jonas的答案是正确的解决方案.
编辑
来自@gnovice,@ vivid-colors和@sevenless评论.
通过将abs插入(1)可以找到差值绝对值的平均值
aveDiff = mean(abs(diff(myVector))) %#(2)
Run Code Online (Sandbox Code Playgroud)
如果你有一个数组array
,那么平均差是
(array(end) - array(1))/(length(array)-1)
Run Code Online (Sandbox Code Playgroud)
因为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
Run Code Online (Sandbox Code Playgroud)