MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

0

Tangent at a given point to a nonlinear curve

Jan Adamkiewicz さんによって質問されました 2019 年 1 月 20 日
最新アクティビティ John D'Errico
さんによって コメントされました 2019 年 1 月 20 日
Hello,
I have a problem with caltulating and plotting a tangent to a specified point from data given by two arrays. I know i'm supposed to use spline function to estimate the function of the data points I have and then calculate the derivative and slope to plot a tangent, but unfortunately i'm not very experienced with MATLAB. I would greatly appreciate any help of how to get from teoretical idea to matlab code. So far, i have created a script that uses movmean function to filter any noise i got from the source of the data and got a plot like shown below:
load trzy.csv
A=zeros(1906,2);
A=trzy;
x=A(:,2)*1000;
B=zeros(1906,1);
C=zeros(1906,1);
B(:,1)=movmean(A(:,1),7);
A(:,1)=B(:,1);
C(:,1)=movmean(x,7);
for k = 2:20
B(:,k)=movmean(B(:,k-1),7) ;
end
for y = 2:20
C(:,y)=movmean(C(:,y-1),7);
end
plot(B(:,20),C(:,20))

  0 件のコメント

サインイン to comment.

タグ

製品


リリース

R2018b

2 件の回答

回答者: Sargondjani
2019 年 1 月 20 日
編集済み: Sargondjani
2019 年 1 月 20 日
 採用された回答

I think you need to be a bit more precise in what you want: you have data with errors in them, and you want to fit a curve that approximates those points, and then get the slope of the curve?
If you want to fit a spline that goes through all data points (of 1D function), and get the slope one simply way to do it is to use interp1:
POL = interp1(xx,yy,'spline','pp');
dPOL = fnder(POL);
dydx = ppval(dPOL,xi);
where xi are your query points. Something like that.

  1 件のコメント

Jan Adamkiewicz 2019 年 1 月 20 日
Hi !
The situation is as follows:
I have a curve plotted using two arrays of data ( one is voltage, the other is time) and i have to draw a tangent to a particular point on this curve. I just don't know how to do it.

サインイン to comment.


回答者: John D'Errico
2019 年 1 月 20 日

Why not try using a spline? Actually, given that slope discontinuity at the beginning of your curve, you would use pchip. That is as simple as
spl = pchip(B(:,20),C(:,20));
You can differentiate the spline usingfnder (if you have the curve fitting toolbox.) And then evaluate
splder = fnder(spl);
Now you can evaluate the function in spl or the derivative function in splder using fnval or ppval.
So try these tools.

  2 件のコメント

Jan Adamkiewicz 2019 年 1 月 20 日
Thank you very much ! I get the idea and it seems to be working :) Have a lovely day
John D'Errico
2019 年 1 月 20 日
fnplt(spl)

サインイン to comment.



Translated by