Thread Subject:
finding slope of linear region from a load-displacement curve

Subject: finding slope of linear region from a load-displacement curve

From: Karan

Date: 1 Aug, 2012 17:26:13

Message: 1 of 3

I have a slope displacement curve for a biological tissue, it is not as noisy as you would expect it to be. It does have distinct regions (exponential region in the beginning and linear region right after that up till failure). I have my data input from a txt file with 2 columns (Load & Displacement).

I need to find the slope of the linear region of the Load-displacement curve (region before failure/highest peak Load). Currently, I'm doing this by defining that most of the linear region is observed from 50% - 80% of the curve before failure. Once I define the points within this region, I do a polyfit for a linear line and get the slope that way.

But the problem is that 50%-80% is a gross approximation and does not stand true for all samples. The current method is kind of getting the gross approximation of the slope.

Is there a better way to get a more accurate slope?

Thanks for the help in advance.

Subject: finding slope of linear region from a load-displacement curve

From: dpb

Date: 1 Aug, 2012 18:46:50

Message: 2 of 3

On 8/1/2012 12:26 PM, Karan wrote:
> I have a slope displacement curve for a biological tissue, it is not as
> noisy as you would expect it to be. It does have distinct regions
> (exponential region in the beginning and linear region right after that
> up till failure). I have my data input from a txt file with 2 columns
> (Load & Displacement).
> I need to find the slope of the linear region of the Load-displacement
> curve (region before failure/highest peak Load). Currently, I'm doing
> this by defining that most of the linear region is observed from 50% -
> 80% of the curve before failure. Once I define the points within this
> region, I do a polyfit for a linear line and get the slope that way.
> But the problem is that 50%-80% is a gross approximation and does not
> stand true for all samples. The current method is kind of getting the
> gross approximation of the slope.
> Is there a better way to get a more accurate slope?

Perhaps add points until residual error doesn't continue to drop or pick
up a shape of increasing error trend at either end.

--

Subject: finding slope of linear region from a load-displacement curve

From: John D'Errico

Date: 1 Aug, 2012 19:36:17

Message: 3 of 3

"Karan" wrote in message <jvborl$9ap$1@newscl01ah.mathworks.com>...
> I have a slope displacement curve for a biological tissue, it is not as noisy as you would expect it to be. It does have distinct regions (exponential region in the beginning and linear region right after that up till failure). I have my data input from a txt file with 2 columns (Load & Displacement).
>
> I need to find the slope of the linear region of the Load-displacement curve (region before failure/highest peak Load). Currently, I'm doing this by defining that most of the linear region is observed from 50% - 80% of the curve before failure. Once I define the points within this region, I do a polyfit for a linear line and get the slope that way.
>
> But the problem is that 50%-80% is a gross approximation and does not stand true for all samples. The current method is kind of getting the gross approximation of the slope.
>
> Is there a better way to get a more accurate slope?
>
> Thanks for the help in advance.

I would use my SLM tools to fit the curve.

From what you have said, the curve would be:

1. Monotone, though you have not said if it is increasing
or decreasing. I assume that strain-displacement tells me
the curve is monotone increasing.

2. The second derivative also will be everywhere positive
if I've read your comments properly.

You know those pieces of information. Finally, specify
that the curve has a linear region in the first half or so.
Pick a point below which the curve is clearly linear. The
result won't be damaged if you miss that point too low.

Then do the fit, and extract the slope of the linear portion.
Since the slope is constant in that linear region, this just
requires you to use slmeval at the endpoint.

The calls might look vaguely like this, assuming that x and
y are vectors containing the data for the curve. I made no
assumption that the points are sorted so that x is increasing
so I had to use min(x) and max(x).

slm = slmengine(x,y, 'knots',10, 'increasing','on', ...
   'concaveup','on', 'linearregion',min(x) + [0,(max(x) - min(x))*0.2]);

This will compute the slope of the curve at the minimum
value for x:

S = slmeval(slm,min(x),1);

http://www.mathworks.com/matlabcentral/fileexchange/24443-slm-shape-language-modeling

The only requirement is the optimization toolbox.

HTH,
John

Tags for this Thread

Add a New Tag:

Separated by commas
Ex.: root locus, bode

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

rssFeed for this Thread

Contact us