Filter löschen
Filter löschen

Mean value of data with irregular intervals

3 Ansichten (letzte 30 Tage)
bobo
bobo am 29 Jul. 2013
Kommentiert: Andrew Sandeman am 15 Jun. 2023
Hello,
I am trying to obtain average y value for a data set (x,y). However, interval between data points is not regular and mean(y) is off from the expected value. For example,
x = [1 1.1 1.2 1.3 2 3 4 5.1 5.2 5.3 5.4]; y = [0 0.1 0.2 0.3 1 2 1 0.3 0.2 0.1 0];
Because x,y are more densely lying in x = [0 1] and [5 6] intervals, y values in those intervals are weighted more if I take mean(y). Do you know how to avoid this and obtain y value in uniform intervals?
Thanks, Bobo

Akzeptierte Antwort

Iain
Iain am 29 Jul. 2013
Why not just take a weighted mean?
This method ignores y(1) - you could change it to ignore y(end), or add info and inclue it.
totalweight = 0;
weightedsum = 0;
for i = 2:numel(x)
weight = x(i)-x(i-1);
weightedsum = weightedsum + weight*y(i);
totalweight = totalweight + weight;
end
meanvalue = weightedsum / totalweight;
  1 Kommentar
dpb
dpb am 29 Jul. 2013
Bearbeitet: dpb am 30 Jul. 2013
d=diff(xx);
m=sum(d.*yy(2:end))/sum(d);
which can also be written as
m=dot(diff(xx),yy(2:end))/sum(d);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

dpb
dpb am 29 Jul. 2013
Bearbeitet: dpb am 29 Jul. 2013
One way to weight uniformly...
dx=min(diff(x)); % shortest difference in vector
xi=x(1):dx:x(end); % fill in all values equally
yhat=interp1(x',y',x1'); % and get corresponding y's...
mean(yhat); % obviously can combine steps ...
  2 Kommentare
bobo
bobo am 30 Jul. 2013
Thanks!!
Andrew Sandeman
Andrew Sandeman am 15 Jun. 2023
In my opinion this is the correct answer, not the currently accepted answer.
  • This method does not neglect y(1)
  • Samples which are obtained more sparsely are weighted more accurately using this interpolation method

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Types finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by