MATLAB Answers

How to draw the tangent line on a curve

37 ビュー (過去 30 日間)
Inou
Inou 2021 年 6 月 29 日
コメント済み: Star Strider 2021 年 6 月 30 日
I would like to plot the tangent of the curve I (V) and find the slope and then the intersection of the tangent with the x axis (V0).
I am attaching the curve data (I, U) and a summary image of what I am looking for. Thank you in advance for your help

採用された回答

Star Strider
Star Strider 2021 年 6 月 29 日
Try this —
T1 = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/668953/Tan.xlsx')
T1 = 42×2 table
I V ______ ________ 0 0 0 0.064516 0 0.14337 0 0.20072 0 0.36559 0 0.45878 4.6681 0.55197 19.593 0.63799 40.963 0.73118 58.96 0.7957 79.604 0.86022 114.14 0.9534 138.19 1.0108 164.38 1.0681 181.86 1.1039 207.75 1.1541
I = T1.I;
V = T1.V;
dI = gradient(I);
dV = gradient(V);
Vi = 1.3; % Choose Voltage Value To Calculate Slope
Ii = interp1(V, I, Vi);
dVi = interp1(V, dV, Vi)
dVi = 0.0299
dIi = interp1(V, dI, Vi)
dIi = 18.8851
Slope = dIi/dVi
Slope = 631.9586
YIntercept = Ii - Slope * Vi
YIntercept = -528.9232
XIntercept = -YIntercept / Slope
XIntercept = 0.8370
figure
plot(V,I)
hold on
plot(Vi, Ii, 'p')
plot(xlim, xlim*Slope+YIntercept, '-r')
plot(XIntercept, 0, 'sr')
hold off
grid
xlabel('V')
ylabel('I')
text(Vi, Ii, sprintf('$I = %.3f \\times V %+.3f \\rightarrow \\ $', Slope, YIntercept), 'Horiz','right', 'Vert','middle', 'Interpreter','latex')
text(XIntercept, 0, sprintf('$%.4f V \\downarrow $', XIntercept), 'Horiz','right', 'Vert','bottom', 'Interpreter','latex')
ylim([0 max(ylim)])
.
  4 件のコメント
Star Strider
Star Strider 2021 年 6 月 30 日
As always, my pleasure!
I am slightly lost, however. If the objective is to find values of ‘I’ and ‘V’ to produice an x-axis intercept within those limits, a simple search using a for loop would likely work. If the intent is different, a somewhat more sophisticated approach would be necessary.

サインインしてコメントする。

その他の回答 (1 件)

Asmit Singh
Asmit Singh 2021 年 6 月 29 日
This answer might be useful.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by