修正r s分析法matlab程序,关于R/S分析程序用法
看到有人用下面的源代码,但为何有时候求出的值是负数,请各位帮忙,我是新接触最好能稍微具体一点讲解,谢谢。
function [logRS,logERS,V]=RSana(x,n,method,q)
% 用 R/S 方法分析间序列
% logRS 是 log(R/S).
% logERS 是 log(R/S)期望.
% V 是统计量.
% x 是时间序列.
% n 是这个数列的子集.
% method 可以取下列值
% 'Hurst' 为了Hurst-Mandelbrot变量
% 'Lo' 是Lo变量.
% 'MW' 是Moody-Wu变量.
% 'Parzen' 是Parzen变量.
% q 可以是任意值
% a 是非0整数.
% 'auto' 是 Lo的默认值.
if nargin<1 | isempty(x)==1
error('你应该给出一个时间序列.');
else
% x 必须是变量
if min(size(x))>1
error('时间序列无效.');
end
x=x(:);
% N 是时间序列的长度
N=length(x);
end
if nargin<2 | isempty(n)==1
n=1;
else
% n 必须是一个变化的标量或矢量
if min(size(n))>1
error('n 必须是一个变化的标量或矢量.');
end
% n 必须是个整数
if n-round(n)~=0
error('n 必须是个整数.');
end
% n 必须是确定
if n<=0
error('n 必须是确定.');
end
end
if nargin<4 | isempty(q)==1
q=0;
else
if q=='auto'
t=autocorr(x,1);
t=t(2);
q=((3*N/2)^(1/3))*(2*t/(1-t^2))^(2/3);
else
% q 必须是标量
if sum(size(q))>2
error('q 必须是标量.');
end
% q 必须是整数
if q-round(q)~=0
error('q 必须是整数.');
end
% q 必须是确定
if q<0
error('q 必须是确定.');
end
end
end
for i=1:length(n)
% 计算这个子序列
a=floor(N/n(i));
% 仓健这个子序列的矩阵
X=reshape(x(1:a*n(i)),n(i),a);
% 估算这个子序列的平均值
ave=mean(X);
% 给这个序列的每一个值除以平均值
cumdev=X-ones(n(i),1)*ave;
% 估算累计离差
cumdev=cumsum(cumdev);
% 估算这个标准偏差
switch method
case 'Hurst'
% Hurst-Mandelbrot 参数
stdev=std(X);
case 'Lo'
% Lo 参数
for j=1:a
sq=0;
for k=0:q
v(k+1)=sum(X(k+1:n(i),j)'*X(1:n(i)-k,j))/(n(i)-1);
if k>0
sq=sq+(1-k/(q+1))*v(k+1);
end
end
stdev(j)=sqrt(v(1)+2*sq);
end
case 'MW'
% Moody-Wu 参数
for j=1:a
sq1=0;
sq2=0;
for k=0:q
v(k+1)=sum(X(k+1:n(i),j)'*X(1:n(i)-k,j))/(n(i)-1);
if k>0
sq1=sq1+(1-k/(q+1))*(n(i)-k)/n(i)/n(i);
sq2=sq2+(1-k/(q+1))*v(k+1);
end
end
stdev(j)=sqrt((1+2*sq1)*v(1)+2*sq2);
end
case 'Parzen'
% Parzen 参数
if mod(q,2)~=0
error('在"Parzen" 参数中q 必须是2.');
end
for j=1:a
sq1=0;
sq2=0;
for k=0:q
v(k+1)=sum(X(k+1:n(i),j)'*X(1:n(i)-k,j))/(n(i)-1);
if k>0 & k<=q/2
sq1=sq1+(1-6*(k/q)^2+6*(k/q)^3)*v(k+1);
elseif k>0 & k>q/2
sq2=sq2+(1-(k/q)^3)*v(k+1);
end
end
stdev(j)=sqrt(v(1)+2*sq1+2*sq2);
end
otherwise
error('你应该付给 "method"另一个值.');
end
% 估算(R(t)/s(t))
rs=(max(cumdev)-min(cumdev))./stdev;
clear stdev
% 取这个平均值 R/S的对数
logRS(i,1)=log10(mean(rs));
if nargout>1
% 开始计算log(E(R/S))
j=1:n(i)-1;
s=sqrt((n(i)-j)./j);
s=sum(s);
% 估算log(E(R/S))
logERS(i,1)=log10(s/sqrt(n(i)*pi/2));
%其它估算log(E(R/S))
%logERS(i,1)=log10((n(i)-0.5)/n(i)*s/sqrt(n(i)*pi/2));
%logERS(i,1)=log10(sqrt(n(i)*pi/2));
end
if nargout>2
% 估算 V
V(i,1)=mean(rs)/sqrt(n(i));
end
x(i)=log10(i);
hold on
plot(x(i),V(i,1),'-')
plot(x(i),logRS(i,1),'g')
plot(x(i),logERS(i,1),'r')
end
请问程序完整吗,为什么我得不到logERS和V统计量呢?:L
修正r s分析法matlab程序,关于R/S分析程序用法相关推荐
- 综合评价分析法:熵权法matlab实现+层次分析法matlab实现
综合评价分析法:熵权法matlab实现+层次分析法matlab实现 层次分析法matlab实现 clc;clear%层次分析法matlab实现A=[1 1/9 1/2 1/4 1/6 9 1 6 5 ...
- matlab灰关联度,[转载]灰色关联和加权关联分析法matlab程序
%by allen %灰色关联分析法和灰色加权关联分析法matlab程序,其区别主要在于求关联度是使用平均值法还是加权法 %平均值法为一般普通求法,加权值法可以根据侧重点不同进行分析 %matlab6 ...
- matlab关联度排序模型,灰色关联和加权关联分析法matlab程序
%by allen %灰色关联分析法和灰色加权关联分析法matlab程序,其区别主要在于求关联度是使用平均值法还是加权法 %平均值法为一般普通求法,加权值法可以根据侧重点不同进行分析 %matlab6 ...
- ahp层次分析法matlab代码_Matlab数据分析实战,基于AHP高校食堂满意度调查分析
层次分析法(Analytical Hierachy Process,AHP)是匹兹堡大学T.L.Saaty教授在20世纪70年代初期提出对定性问题进行定量分析的一种渐变灵活的多准则决策方案. 其特点是 ...
- 目标层准则层MATLAB,层次分析法-MATLAB
层次分析法-MATLAB 第八章 层次分析法 层次分析法(Analytic Hierarchy Process,简称AHP)是对一些较为复杂.较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全 ...
- c语言的适当大小的子集,使用直接分析法编制C语言子集的词法分析程序..doc
一.题目 使用直接分析法编制C语言子集的词法分析程序 二.目的 通过设计.编制.调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法 ...
- 编译原理预测分析法c语言,编译原理预测分析法C语言的实验报告.doc
题目:编写识别由下列文法所定义的表达式的预测分析程序. EàE+T | E-T | T TàT*F | T/F |F Fà(E) | i 输入:每行含一个表达式的文本文件. 输出:分析成功或不成功信息 ...
- 软件测试 边界值分析法,[转] 软件测试方法_边界值分析法
目录: ①边界值分析法的介绍和概念 ②边界值分析法的原理和思想 ③单缺陷假设和多缺陷假设 ④边界值测试数据类型 ⑤内部边界值分析 ⑥各类边界值测试介绍 ⑦基于边界值分析方法选择测试用例的原则 ⑧边界值 ...
- 主程序分析法MATLAB编程,专题五 概率统计问题的Matlab求解
[实验目的及要求] I.熟练掌握Matlab编程中常见概率分布的概率密度.概率分布.逆分布.均值和方差等语句的调用格式,学会用Matlab对服从各种分布的样本进行参数估计和假设检验.对实际问题,能够进 ...
- ahp层次分析法matlab代码_(案例)AHP层次决策分析Matlab编码计算
"层次聚类分析Matlab编码计算" 01 - AHP层次决策分析计算函数 求判断矩阵最大特征根和归一化特征向量: function [maxEigVal,w] = maxEigV ...
最新文章
- 在 Ubuntu 14.04 Chrome中安装Flash Player(转)
- 这才是微服务拆分的正确姿势,值得学习!
- java 遍历方法_Java ArrayList遍历的3种方法
- SAP在物流工作中的应用之学习笔记
- OpenCASCADE绘制测试线束:拓扑命令之纹理映射到形状
- git status或者 git commit 中文文件显示乱码
- 【全网最全的博客美化系列教程】08.自定义地址栏Logo
- Atitit 局部图查找大图 方法 与 说明
- 简单的小愿望,就这么难实现
- java代码性能优化
- SaaSpace:10种最佳免费密码管理器软件
- 控制教程 —— 巡航控制篇:2.PID控制器设计
- MATLAB数字图像处理(二)直方图
- 文献阅读(77)稀疏跳零结构(1)
- signature=54cb1c123491dc1a268a21f3502cccfc,汉隶《曹全碑》精讲精练
- Android神奇“控件”-----RemoteViews
- 怎么提高python编程水平_编程新手如何提高编程能力?
- long long类型上限_32位long最大值
- 论文查重自己文章会查吗?
- 新升级,新格局 |2022(第三届)全球数字经济产业大会9月盛大来袭!