finding slope of a curve at some specific points
67 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
cagatay yilmaz
am 10 Apr. 2015
Kommentiert: Caden Armentrout
am 8 Sep. 2021
Hi
I have a a column data set which is the transverse strain of a composite material. I want to calculate slope of it at some specific points
0 Kommentare
Akzeptierte Antwort
Star Strider
am 10 Apr. 2015
Your data appear to be smooth enough that you could fit them with a low-order (about 3 or 4) polynomial with polyfit, dividing ‘Index’ by 1E+5 first. Then use polyder to take the derivative of the polyfit coefficients, and use polyval to evaluate the derivative at the values of ‘Index’ you want.
6 Kommentare
Weitere Antworten (6)
Image Analyst
am 10 Apr. 2015
How about if you just pass points around the point in question to polyfit and fit a line to them:
coefficients = polyfit(x(index1:index2), y(index1:index2), 1);
slope = coefficients(1);
Or fit a quadratic and get the slope at the middle of the stretch of points you fitted:
coefficients = polyfit(x(index1:index2), y(index1:index2), 2);
slope = 2 * coefficients(1) * x(middleIndex) + coefficients(2);
3 Kommentare
Image Analyst
am 28 Feb. 2016
Chris, post your own question and show your code about how you tried to use interp1() to get uniformly spaced data and then used gradient() and show why that wasn't working. Then someone will probably answer there.
Chris McComb
am 10 Apr. 2015
You might want to start by looking at MATLAB's gradient function. You could also use simple finite difference formulas, like:
slope(i) = (y(i+1) - y(i-1))/(x(i+1) - x(i-1))
0 Kommentare
Eirini Gk
am 25 Mär. 2016
Hello, I need also to find some things like that but im new in matlab and i cant understand every statement. i want to make a function that gives the slope in a point in every curve (close curve). I dont have the toolbox to use 'sym' statement because i need to do it just numerically. I think that diff or gradient function would help but i havent understand excaclty how to use it. I have to input F(x,y) (for example x^2+y^2-1 - the circle with radius 1) and a point of it (x0,y0). I saw that with these statement i get a row of numbers. But can somebody explain me excactly input and ouputs in these statement? Thank you.
0 Kommentare
cagatay yilmaz
am 25 Mär. 2016
Bearbeitet: cagatay yilmaz
am 25 Mär. 2016
1 Kommentar
Eirini Gk
am 25 Mär. 2016
i dont understand why i have to input an interval. I mean its because of the numerical methods? So when i want a point , lets say (x0,y0)=(2,3) i have to take an area of x=1.5:0.001:2.5 or not?
ali moshkriz
am 7 Dez. 2016
hey Guys! how can i find the slope of this curve in 3 point that have different slope! please help...
>> A=[0,198.6026,397.2053,993.01346,2376.65783,3968.16977,4566.799,5161.454,6956.4044,9930.1346]; >> B=[0.29835,0.3978,0.467415,0.546975,0.745875,0.975375,1.09395,1.3923,2.56275,4.5288]; >> loglog(A,B);
0 Kommentare
Image Analyst
am 7 Dez. 2016
The slope is deltaB/deltaA. For each point, you will have a slope to the right of the point and a slope to the left of the point. You can take whichever one you want, or even average the slopes on each side if you want. For example, the slopes around element #2:
leftSlope = (B(2)-B(1)) / (A(2)-A(1))
rightSlope = (B(3)-B(2)) / (A(3)-A(2))
averageSlope = (leftSlope + rightSlope) / 2;
0 Kommentare
Siehe auch
Kategorien
Mehr zu Interpolation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!