MATLAB Answers

0

Select values on x axis corresponding to a y axis value

Asked by Darpan Verma on 12 Mar 2019
Latest activity Commented on by Mauro Fusco on 12 Mar 2019
Hi Everyone, I am trying to make a fit for the linear portion of the graph using MATLAB code, but I am stuck at this point.
I am trying to extract the value of x axis where the 10% line is made as shown in figure below. and extract x axis data where the 90% line is made. and that is defined by the variable parameter. Any help would be appreciated.
Screen Shot 2019-03-12 at 2.12.28 PM.png

  0 Comments

Sign in to comment.

1 Answer

Answer by Mauro Fusco on 12 Mar 2019
 Accepted Answer

Let's say that your curve is described by the vectors x and y (I imagine that you obtain that curve via plot(x,y)).
Then you can find the maximum of the curve as:
y_max = max(y);
You can then pick the indices of the points corresponding to 10% and 90% of the maximum as:
idx_y10 = find(y == 0.1*y_max);
idx_y90 = find(y == 0.9*y_max);
The values that you are searching on the x axis will be:
x_10 = x(idx_y10);
x_90 = x(idx_y90);
I did not try it, enjoy!

  5 Comments

I also tried what mauro suggested. But dont understand where I am wrong.Screen Shot 2019-03-12 at 2.54.45 PM.png
Thanks I solved it. I was just doing a small error.
Thanks to both of you
Very good, but it is correct that my answer was not fully precise. Therefore, I post here answer.jpga working code:
close all;
x = 0:0.01:3*pi/4;
y=sin(x);
plot(x,y);
[y_max,idx_max] = max(y);
idx_y10 = find(y > 0.1*y_max,1,'first');
idx_y90 = find(y(1:idx_max) < 0.9*y_max,1,'last');
x_10 = x(idx_y10);
x_90 = x(idx_y90);
hold on;
plot(x_10,0.1*y_max,'o red');
hold on;
plot(x_90,0.9*y_max,'o red');

Sign in to comment.