matlab中的渐变函数给出了意想不到的结果

时间:2015-11-02 02:48:35

标签: matlab

我发现matlab中的渐变函数给了我不同的答案。

我测试了这个数据集

a = [0.337961000000000   0.394426000000000   1.083110000000000;
0.337977000000000   0.394627000000000   1.084470000000000;
0.337972000000000   0.394768000000000   1.085870000000000;
0.337950000000000   0.394923000000000   1.087260000000000;
0.337949000000000   0.395092000000000   1.088510000000000]

根据用于计算梯度的方式

v(2,:) =(a(3,:) - a(1,:))/(2 * dt)

其中dt = 1/240;

我希望v(2,:)可以

0.001319999999998   0.041039999999994   0.331200000000011

而梯度函数(梯度(a)/ dt)给出

1.0e+02 *

0.135960000000000   0.895791600000000   1.655623200000000

有谁可以帮忙看看这里有什么问题?谢谢。

1 个答案:

答案 0 :(得分:2)

您正在查看渐变的错误方向,您需要使用渐变的第二个输出。

例如:

[~, fy] = gradient(a);
fy = fy / dt;
fy(2,:)

ans =

     0.0013    0.0410    0.3312