How can I average points with just the same x-coordinate?

I have many plots on top of each other, and there are a lot of points with the same x coordinate. I want to average all points same x coordinate, and plot this as one new point, so to get an idea of the general trend. Is there an easy way to do this in MATLAB?

Réponses (2)

Sure!
% Sample x y
x = randi(10,100,1);
y = rand(100,1);
% Unique x's and their locations
[ux,~,idx] = unique(x);
% Accumulate
ymean = accumarray(idx,y,[],@mean);
% Plot
plot(ux,ymean)
if you have more than 1 plot as in >>plot(x,y) but more of >>plot(x1,y1,x2,y2) etc or a held plot then you can try this.
x1=1:1:20; y1=1:1:20;
x2=1:2:20; y2=1:2:20;
x3=1:3:20; y3=1:3:20;
x4=1:4:20; y4=1:4:20;
%pre-allocate average y matrix
Y = zeros(max([length(x1) length(x2) length(x3) length(x4)]),4);
Y(:,1) = y1;
[a b] = ismember(x1,x2);
Y(a,2) = y2;
[a b] = ismember(x1,x3);
Y(a,3) = y3;
[a b] = ismember(x1,x4);
Y(a,4) = y4;
av_Y = sum(Y,2)./sum(Y~=0,2);

1 commentaire

thinking about it more y could have zeros so swap out the corresponding lines
Y = nan(max([length(x1) length(x2) length(x3) length(x4)]),4);
av_Y = nanmean(Y,2)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Line Plots dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by