Finding gradient of a part of a graph
40 次查看(过去 30 天)
显示 更早的评论
May I know how to find the gradient of the first linear part? What function should I use?
0 个评论
采纳的回答
Sam Chak
2022-4-9
编辑:Sam Chak
2022-4-9
Technically, if is plotted by a function f(x) with a uniform step size h, then you can use the nabla = gradient(f)/h to compute the slope of f(x).
To find the gradient of the transient response, you need to pick a point in that region, for example, , and then find the index idx that is nearest to, or exactly at this point.
h = 0.01;
x = 0:h:10;
y = 1 - exp(-x/sqrt(2)).*(cos(x/sqrt(2)) + sin(x/sqrt(2)));
plot(x, y)
hold on
nabla = gradient(y)/h;
[M, idx] = max(nabla);
plot(x(idx), y(idx), 'o', 'linewidth', 1.5)
m = nabla(idx) % slope at point p
c = y(idx) - m*x(idx) % y-intercept
z = m*x + c; % line equation at point p
plot(x, z, 'linewidth', 1.5)
hold off
grid on
xlabel('x')
ylabel('y')
title('y = f(x) and the tangent line at the steepest slope')
legend('function f(x)', 'the point at f(p)', 'tangent line', 'location', 'best')
Result:
Note: If the spread of the data points are not uniform, then you probably need to use the interpolation technique, interp1().
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graph and Network Algorithms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!