MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply TodayTo resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Asked by K on 21 Dec 2012

Hi, I plotted a cumulative sum in Matlab. Is there any where for me to get the value of x from the plot(value of y is known)?

*No products are associated with this question.*

Answer by Image Analyst on 21 Dec 2012

Accepted answer

K:

**x never equals 7000.** Not sure which bar graph you were looking at but none of them have an x value of 7000. Now if you want the x value **where y first exceeds 7000**, then you can look at **the last few lines** I tacked on to the bottom of their example (which is the top several lines):

clear clc; workspace; % Make sure the workspace panel is showing. format longg; format compact; fontSize = 20;

x = -2.9:0.1:2.9; y = randn(10000,1); figure(1) hist(y,x); xlabel('x', 'FontSize', fontSize); ylabel('y', 'FontSize', fontSize); title('Histogram', 'FontSize', fontSize);

% Calculate number of elements in each bin n_elements = histc(y,x); % Calculate the cumulative sum of these elements using cumsum c_elements = cumsum(n_elements) % Plot the cumulative distribution like a histogram using bar: figure(2) bar(x,c_elements,'BarWidth',1); grid on; % Enlarge figure to full screen. set(gcf, 'units','normalized','outerposition',[0 0 1 1]);

% Find out x when c_elements = 7000 % first find the index. x7000Index = find(c_elements >= 7000, 1, 'first') % Then find the x value for that index. x7000 = x(x7000Index); message = sprintf('The cumulative sum first exceeds 7000\nat an x value of %.1f', x7000); uiwait(msgbox(message));

Answer by Jan Simon on 21 Dec 2012

It depends on what you exactly want...

Actually the X-values are trivial:

data = rand(1, 100); y = cumsum(data); lineH = plot(y); % Now the X-values are: x = 1:numel(y); % You can obtain them explicitly: x2 = get(lineH, 'XData');

Answer by Azzi Abdelmalek on 21 Dec 2012

x=1:10 y=cumsum(x) % for y=15 x0=x(find(y==15))

K on 21 Dec 2012

Thank you for your reply. Actualy I did the cumsum from this example: http://www.mathworks.co.uk/help/matlab/ref/histc.html

Based on the bar graph, I need to find the y value when x=7000

I tried your solution. But it give different value.

Answer by K on 21 Dec 2012

Thank you for your reply. Actualy I did the cumsum from this example: http://www.mathworks.co.uk/help/matlab/ref/histc.html

According to the bar graph, I need to find the y value when x=7000.

## 0 Comments