How to find the slope of phase data (between two points) which is uneven
    16 views (last 30 days)
  
       Show older comments
    
    Sriram Guddati
 on 12 Oct 2018
  
    
    
    
    
    Answered: Greg Dionne
    
 on 26 Oct 2018
            
I have a phase vs frequency plot. I need to find the slope between point 'a' and point 'b' in an automated way instead of looking at the points 'a' and 'b' and calculating the slope. Can anyone help me with this?
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
  
      I would suggest using either findpeaks to determine points a and b and then calculate the average slope or alternatively using findchangepts. If you want code, then I suggest you upload some data.
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
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


