Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

How to find the x value from cumsum

Asked by K

K (view profile)

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)?

0 Comments

K

K (view profile)

Tags

Products

No products are associated with this question.

4 Answers

Answer by Image Analyst

Image Analyst (view profile)

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));

1 Comment

K

K (view profile)

on 21 Dec 2012

Thank you very much. Yes, I made some error in my writing. I want the x value where y first exceeds 7000. Thank you again for your help.

Image Analyst

Image Analyst (view profile)

Answer by Jan Simon

Jan Simon (view profile)

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');

0 Comments

Jan Simon

Jan Simon (view profile)

Answer by Azzi Abdelmalek

Azzi Abdelmalek (view profile)

on 21 Dec 2012
x=1:10
y=cumsum(x)
% for y=15
x0=x(find(y==15))

1 Comment

K

K (view profile)

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.

Azzi Abdelmalek

Azzi Abdelmalek (view profile)

Answer by K

K (view profile)

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

K

K (view profile)

Contact us