计算臭氧( O 3 \text{O}_3 O3) 最大8小时内滑动平均
背景:同学在参加研究生数学建模比赛时需要对某时序数据求最大8小时滑动平均。 总的来说,问题比较简单,稍加注意和细心不难写出代码。应要求,本文代码主要通过matlab编写。
题目求解思路直接见代码注释 |
1 题目:
臭氧(
O
3
\text{O}_3
O3) 最大8小时内滑动平均: 指一个自然日内8时至24时的所有8小时滑动平均浓度的最大值,其中8小时滑动平均值连续8小时平均浓度的算术平均值。其计算公式如下:
C
O
3
=
max
t
=
8
,
9
,
…
,
24
{
1
8
∑
i
=
t
−
7
t
c
t
}
\mathrm{C}_{\mathrm{O}_{3}}=\max _{t=8,9, \ldots, 24}\left\{\frac{1}{8} \sum_{i=t-7}^{t} \mathrm{c}_{t}\right\}
CO3=t=8,9,…,24max{81i=t−7∑tct}
其中 c t 为臭氧在某日 t − 1 时至 t 时的平均污染物浓度。 \text { 其中 } c_{t} \text { 为臭氧在某日 } t-1 \text { 时至 } t \text { 时的平均污染物浓度。 } 其中 ct 为臭氧在某日 t−1 时至 t 时的平均污染物浓度。
2 数据
为了方便说明,在这里我们仅以图片给出部分数据信息
(完整数据可私信博主获取) |
3 代码:
clear all,clc,close all
%%
data = xlsread('sj-xxw(1).xls') % 其中第五列是臭氧数据
[m,n] = size(data)
o3 = data(:,5) % 这是臭氧每小时的数据,24个小时一个周期。
%% 先将所有臭氧数据转为 每天一列的 矩阵数据
days = fix(m / 24) % fix 向下取整
array_o3 = reshape(o3(1:days*24), [24, days]) % 转化为矩阵
%% 计算滑动平均
% 先直接将其复制成为 17*24 行的矩阵
array = repmat(array_o3,17,1)
% 提取我们想要的 【滑动窗格内的数据】
temp_all = []
for i = 1:17
array_temp = array(i:i+7,:)
temp = mean(array_temp) % [mean1,mean2 ---mean3]
temp_all = [temp_all;temp]
end
day_all = max(temp_all) % days天里,每天的 臭氧最大8小时滑动平均