# How to find the slope of phase data (between two points) which is uneven

4 views (last 30 days)

Show older comments

Sriram Guddati
on 12 Oct 2018

Answered: Greg Dionne
on 26 Oct 2018

##### 0 Comments

### Accepted Answer

Image Analyst
on 12 Oct 2018

You ask ONLY about the slope, not about finding a and b, so I assume you've found "a" and "b" already. So, assuming your "a" is index1 and "b" is index2, you can do this

coefficients = polyfit(x(index1):x(index2), signal(index1:index2), 1);

slope = coefficients(1);

##### 3 Comments

Image Analyst
on 12 Oct 2018

OK, that wasn't stated in the original question. So you can use

[peakValues, indexOfPeaks] = findpeaks(signal);

[valleyValues, indexOfValleys] = findpeaks(-signal);

valleyValues = -valleyValues; % Flip again to get right side up.

Of course you will find lots of peaks and lots of valleys so you'll have to decide which to concentrate on.

### More Answers (2)

jonas
on 12 Oct 2018

Edited: jonas
on 12 Oct 2018

##### 3 Comments

jonas
on 12 Oct 2018

Yes of course. The index is the second output of findpeaks. Note that you need to run the function two times, one for peaks and one for valleys. For the latter, you just turn the plot upside down, i.e.

findpeaks(-y)

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!