【MATLAB】计算最大8小时内滑动平均

计算臭氧( O 3 \text{O}_3 O3) 最大8小时内滑动平均

文章目录

  • 计算臭氧( O 3 \text{O}_3 O3) 最大8小时内滑动平均
    • 1 题目:
    • 2 数据
    • 3 代码:

背景:同学在参加研究生数学建模比赛时需要对某时序数据求最大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=t7tct}

 其中  c t  为臭氧在某日  t − 1  时至  t  时的平均污染物浓度。  \text { 其中 } c_{t} \text { 为臭氧在某日 } t-1 \text { 时至 } t \text { 时的平均污染物浓度。 }  其中 ct 为臭氧在某日 t1 时至 t 时的平均污染物浓度。 

2 数据

为了方便说明,在这里我们仅以图片给出部分数据信息

(完整数据可私信博主获取)

【MATLAB】计算最大8小时内滑动平均_第1张图片

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小时滑动平均

你可能感兴趣的:(matlab)