How can I compute the mean value over a time interval?

76 ビュー (過去 30 日間)
anna bicchi
anna bicchi 2021 年 4 月 23 日
回答済み: Eric Sofen 2021 年 5 月 7 日
Hi veryone!
I have a matrix of 2 colums (one vector time, one vector values) and i'd like to compute the mean value over a time interval.
How can i do that?
thank you very much in advance

回答 (2 件)

Chad Greene
Chad Greene 2021 年 4 月 23 日
Hi Anna, welcome to the forum.
With these types of questions it always helps if you can provide a minimal working example. But you explained the problem well enough that I think I can come up with one.
So you have a matrix M whose columns correspond to time and some dependent variable. Let's say M looks like this:
M = [(1:100)' (1:100)'.^2+randn(100,1)];
Plot the first and second colums to see what kind of data we're looking at:
plot(M(:,1),M(:,2))
xlabel time
To get the average over some interval, say between t = 55 and t=65, get the indices of that range:
ind = M(:,1)>=55 & M(:,1)<65;
Then calculate the mean of column 2 over the interval:
mean(M(ind,2))
ans = 3.5481e+03
  1 件のコメント
anna bicchi
anna bicchi 2021 年 4 月 26 日
Thank you very very much! :)

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


Eric Sofen
Eric Sofen 2021 年 5 月 7 日
If you have, for example, data once per second for an hour and you want to calculate mean values for each minute, I'd recommend using a timetable to store the data and using the retime function. Something like this
% Synthetic data
t = timetable(seconds(0:3600)',rand(3601,1));
tAvg = retime(t,"minutely","mean");
tAvg.Time.Format = 'm' % Display times in minutes

Community Treasure Hunt

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

Start Hunting!

Translated by