Select values on x axis corresponding to a y axis value

조회 수: 12 (최근 30일)
Darpan Verma
Darpan Verma 2019년 3월 12일
댓글: Mauro Fusco 2019년 3월 12일
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

채택된 답변

Mauro Fusco
Mauro Fusco 2019년 3월 12일
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
Darpan Verma
Darpan Verma 2019년 3월 12일
Thanks I solved it. I was just doing a small error.
Thanks to both of you
Mauro Fusco
Mauro Fusco 2019년 3월 12일
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');

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Orange에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by