23 views (last 30 days)

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))

Sargondjani
on 20 Jan 2019

Edited: Sargondjani
on 20 Jan 2019

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.

John D'Errico
on 20 Jan 2019

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.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.