Select values on x axis corresponding to a y axis value
3 次查看(过去 30 天)
显示 更早的评论
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](https://www.mathworks.com/matlabcentral/answers/uploaded_files/208115/Screen%20Shot%202019-03-12%20at%202.12.28%20PM.png)
0 个评论
采纳的回答
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 个评论
Mauro Fusco
2019-3-12
Very good, but it is correct that my answer was not fully precise. Therefore, I post here
a working code:
![answer.jpg](https://www.mathworks.com/matlabcentral/answers/uploaded_files/208127/answer.jpeg)
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 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!