matlab中趋势分析函数有哪些,科学网—SEN趋势度分析及其MATLAB实现 - 杨建华的博文...

SEN趋势度分析及其MATLAB实现

一、博文概述

1.目的

学习理解SEN趋势度分析方法及其应用,并编写简易的SEN趋势度分析函数

2.时间

2016年12月24日

3.关键词

SEN趋势度分析  MATLAB实现

二、博文内容

1.SEN趋势度分析简介

SEN趋势度分析方法是由Sen等人1968年提出的研究长时序变化的方法(Sen,1968),计算公式如下:

$\beta =Median(\frac{x_{j}-x_{i}}{j-i}), j>i, i = 1,2,3,...,N$

其中,Xj和Xi属于待分析趋势的时间序列的元素,依据时间顺序排列。Median为中位数函数。当计算结果β大于0时表示待分析的时间序列呈现上升趋势,当计算结果β小于0时表示待分析的时间序列呈现下降趋势。

2.SEN趋势度分析的MATLAB实现

SEN趋势度分析的MATLAB实现的关键在于理解SEN的计算公式,并在具有一定MATLAB基础的情况下,将其通过MATLAB语言编写出来。

2.1 公式解析

26f034ec41a5dd763d48726cd2e2e2fb.png

2.2 MATLAB程序实现

基于2.1的分析,可以利用MATLAB语言实现简单版本SEN函数的编写,个人编写的函数如下:

%-------------------------------------------------------------------------%

% 函数目的:对时间序列进行SEN趋势度分析

% 时间:2016年12月24日

% 作者:东方易

% 输入A:待分析的时间序列(列向量或行向量均可)

% 输出Beta: SEN趋势分析结果

% 不足之处:假设待分析的时间序列不存在缺测、异常值等情况

%-------------------------------------------------------------------------%

function Beta = SENFun_Version1(A)

Row = length(A)*(length(A) - 1)/2;

Q = [];

for ii = 1:length(A)-1

Xi = A(ii);

for jj = (ii+1):length(A)

Xj = A(jj);

Q_Temp((jj-ii),1) = (Xj - Xi)./(jj - ii);

end

Q = [Q;Q_Temp];

clear Q_Temp %必须清除Q_Temp,否则行数不对

end

if Row == size(Q,1)

Beta = median(Q); %MATLAB按列求中位数

else

disp('请注意检查,出现错误');

end

end

转载本文请联系原作者获取授权,同时请注明本文来自杨建华科学网博客。

链接地址:http://wap.sciencenet.cn/blog-3277161-1023083.html

上一篇:MATLAB中的geotiffread函数

下一篇:R语言中的rev函数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值