taking differences and moving averages

13 次查看(过去 30 天)
I have a spreadsheet with
column 1 =date
column 2 =temperature
I now want to have
column 3 = differences between today's temperature - yesterday's temperature
column 4 = 7 day moving average of column 3
Thank you.

采纳的回答

Nicole Peltier
Nicole Peltier 2020-5-25
编辑:Nicole Peltier 2020-5-25
For column 3, look into diff.
diff(x) = [x(2)-x(1), x(3)-x(2), ...]
Keep in mind that diff will give you a vector with one less item than in columns 2 and 1. So you may want to say something like:
Column3(1) = NaN;
Column3(2:end) = diff(Column2);
To avoid an error, you need to preallocate the size of Column3. If you haven't already, you need a line before the two above that looks like this:
Column3 = nan(length(Column2), 1);
That creates a variable with the number of items that you need. You can then replace values with the ones that you calculate using diff. (If you preallocate values to be NaN, then you actually don't need the line Column3(1)=NaN because it already is NaN.)
For column 4, look into movmean. The following would give you a moving average with a window width of 7:
Column4 = movmean(Column3, 7);
% Moving window is centered on index of input, example below
% Column4(6) = mean(Column4(3:9))
The moving window will be centered on the index of the input (example in comment above). If you want column 4 to represent the average of the last 6 days plus today, you'd want to enter:
Column4 = movmean(Column3, [6, 0]);
Hope this helps!
  4 个评论
Nicole Peltier
Nicole Peltier 2020-5-25
I updated my answer above to show you how you can preallocate new. If you don't set the size of the variable, then MATLAB doesn't know what the end element is of your variable new, hence the error.
alpedhuez
alpedhuez 2020-5-26
编辑:alpedhuez 2020-5-26
new=old;
newcases(1)=NaN;
newcases(2:end)=diff(old);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

标签

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by