matlab 降水量海表温度的滑动平均

滑动平均:
在这里插入图片描述
降水量
比如 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965
选取k=5
则序列一是求 1951 1952 1953 1954 1955的平均降水量,平均降水量对应着第三个年份,即1953年。
同理 1952 1953 1954 1955 1956的平均降水量对应着第三个年份,即1954年

下面是滑动平均(moving smooth)函数

%%  moving smooth
function [ytime,yrain]=smooth_yi(time,rain,k)
%   rain denotes precipation
%   time denotes year
%   k is step


for i=1:length(time)-(k-1)
   a=rain(i:i+k-1);
   yrain(i)=mean(a); 
end
m=floor(k/2);

ytime=time(m+1:length(time)-m);
%ytime=time(3:13)
%time数组中第三个数到第13个数
end

for example
k=5时,m=2

第一个序列 1951 1952 1953 1954 1955
ytime此时取1953

第二个序列1952 1953 1954 1955 1956
ytime此时取1954

第三个序列1953 1954 1955 1956 1957
ytime此时取1955
下面的序列依次为1956、1957…1963

对应着ytime数组中1953、1954、1955…1963

降水量的滑动平均

clear all;close all;clc
A=load('文件路径/rain.mat');
rain=A.pp;
year=1951:1993;
time = datenum(year,7,1);

%%   9年的滑动平均
k=9;
[ytime,yrain]=smooth_yi(time,rain,k);
%%   11年的滑动平均
k=11;
[ytime2,yrain2]=smooth_yi(time,rain,k);
%%
figure
set(gcf,'color','w')
plot(time,rain,'k-')
hold on
plot(ytime,yrain,'r-')
plot(ytime2,yrain2,'b-')
datetick('x','yyyy')
xlabel('year')
ylabel('降水量')
title('北京1951-1993年7月份降水量')
legend('降水量','9年滑动平均','11年滑动平均')

海表温度的滑动平均

clear all;close all;clc
%%     读取nc文件

lon = ncread('HadISST_sst.nc','longitude');
lan = ncread('HadISST_sst.nc','latitude');
sst = ncread('HadISST_sst.nc','sst');
time = ncread('HadISST_sst.nc','time');
sst(sst == -1000) = NaN;sst(sst < -1e30)=NaN;

%%      
time=time+datenum(1870,1,1);
time = double(time);
tstr=datestr(time,30);
msst=zeros(1800,1);
%求全球平均海表温度
for i=1:1800
    sst1 = sst(:,:,i);
    msst(i,1) = nanmean(nanmean(sst1,1),2);
end
%求全球平均海表温度的年平均温度
mmsst=[];
time1=[];
for j=1:12:length(time)-11
    a=nanmean(msst(j:j+11));
    mmsst=cat(1,mmsst,a);
    b=time(j);
    time1=cat(1,time1,b);
end
tstr1=datestr(time1,30);
%%
k=7;
[ytime,ymmsst]=smooth_yi(time1,mmsst,k);
%%
figure
set(gcf,'color','w')
plot(time1,mmsst,'k-')
hold on
plot(ytime,ymmsst,'r-')
datetick('x','yyyy')
xlabel('year')
ylabel('sst(\circC)')
title('1870-2019年全球海表平均温度')
legend('sst','7年滑动平均')
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值