Matlab中的分区函数 - 我的代码中缺少什么?

时间:2012-06-05 05:55:13

标签: function matlab

任何人都可以看到我的matlab代码中是否有错误吗?我的目标是复制这个公式:enter image description here

q可以取值1,2,3和5。 我构造了我的向量Xt,其中每个元素是每次(t)的log(1 + return)的累积和 - 对于股票返回 - 第一个元素被标准化为log(1)。

然后计算q的四个值的每个元素Sq(T,delta t),这是我的matlab代码:

for j=1:length(dt);
E=Xt(1:dt(j):end);
EE=diff(E(2:end));
EEE=diff(E(1:end-1));
Sqone(j)=sum(abs(EE-EEE).^1);
Sqtwo(j)=sum(abs(EE-EEE).^2);
Sqthree(j)=sum(abs(EE-EEE).^3);
Sqfive(j)=sum(abs(EE-EEE).^5); end;

上面的代码有什么问题吗?我问这个是因为我知道有什么不对,因为我没有得到预期的结果。我确信这是由于我上面发布的代码。

向量dt是一个从1到高数的向量 - 取决于Xt的大小。但我的矢量dt不是问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

你差两次。使用diff后使用EE-EEE一次。正确的代码是:

for j=1:length(dt);
E=Xt(1:dt(j):end);
EE=abs(diff(E));
Sqone(j)=sum(EE.^1);
Sqtwo(j)=sum(EE.^2);
Sqthree(j)=sum(EE.^3);
Sqfive(j)=sum(EE.^5); end;