フィルターのクリア

Mean value of data with irregular intervals

3 ビュー (過去 30 日間)
bobo
bobo 2013 年 7 月 29 日
コメント済み: Andrew Sandeman 2023 年 6 月 15 日
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

採用された回答

Iain
Iain 2013 年 7 月 29 日
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 件のコメント
dpb
dpb 2013 年 7 月 29 日
編集済み: dpb 2013 年 7 月 30 日
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);

サインインしてコメントする。

その他の回答 (1 件)

dpb
dpb 2013 年 7 月 29 日
編集済み: dpb 2013 年 7 月 29 日
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 件のコメント
bobo
bobo 2013 年 7 月 30 日
Thanks!!
Andrew Sandeman
Andrew Sandeman 2023 年 6 月 15 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeData Types についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by