赤子可鉴 发表于 2010-3-31 20:33:37

请教下gradient对一维向量进行什么运算呢

gradient函数对一维向量进行了什么运算操作呢?
a=
a =
   1   2   3   5   4   2
>> b=gradient(a)
b =
    1.0000    1.0000    1.5000    0.5000   -1.5000   -2.0000
>>
上面是我随手输入的一个一维向量
得出为什么有1.5、0.5、-1.5之类的呢?
谢谢指教

penholder2 发表于 2010-7-18 16:40:05

楼主,你想表达什么意思啊

lengyunfeng 发表于 2010-7-19 19:45:51

本帖最后由 lengyunfeng 于 2010-7-19 20:26 编辑

gradient表示的是梯度值,按理来说,它应该就是你给的数据的相邻点差比去二者的间距,所以按我们的理解应该是当a=时,gradient(a)返回的值应该是[1,1,2,1,-2](这里程序自动认为你的数据间距是1),但这样就有一个问题,你a是1*6的数据,而你的gradient(a)则是一个1*5数据,那么我们现在根本就不知道对于a(1,6)处的变化情况是多少。为了弥补这一问题,Matlab编程人员玩了个小游戏,对于a的首尾数据,它用的就是相邻值之差比去数据间距,比如gradient(a)的(1,1)、(1,6)数据就是(2-1)/1,(2-4)/1。而对于中间的其它数,它就采用间隔点之差除以2倍的间距,比如gradient(a)的(1,2)、(1,4)对应的就应该是(3-1)/2和(4-3)/2。不知道这样说你懂了没?

xtl9720209 发表于 2010-10-29 08:47:59

还是没搞懂
页: [1]
查看完整版本: 请教下gradient对一维向量进行什么运算呢