taking differences and moving averages

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.

 采纳的回答

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 个评论

new(1)=NaN;
new(2:end)=diff(old);
"Unable to perform assignment because the left and the right sides have a different number of elements."
Did you pre-allocate new ? What size did you allocate for it? What size is covid_cases ?
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.
new=old;
newcases(1)=NaN;
newcases(2:end)=diff(old);

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Matrix Indexing 的更多信息

产品

版本

R2020a

标签

Community Treasure Hunt

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

Start Hunting!

Translated by