How to find the x value from cumsum
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Image Analyst
le 21 Déc 2012
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));
Plus de réponses (3)
Jan
le 21 Déc 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 commentaires
Voir également
Catégories
En savoir plus sur Annotations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!