我发现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
有谁可以帮忙看看这里有什么问题?谢谢。
答案 0 :(得分:2)
您正在查看渐变的错误方向,您需要使用渐变的第二个输出。
例如:
[~, fy] = gradient(a);
fy = fy / dt;
fy(2,:)
ans =
0.0013 0.0410 0.3312