2658744907 发表于 2014-8-14 20:46

matlab求峭度,用公式和自己编写的代码分别求,结果不一样

(1)用公式:
x=;
y=kurtosis(x)
结果:
y =

    1.7977
(2)用代码:(按matlab的公式写的)
x=[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32];
a=mean(x);
b=(x-a).*(x-a).*(x-a).*(x-a);
f=sum(b);
c=f/32;
e=std(x).*std(x).*std(x).*std(x);
d=c/e
结果:
d =

    1.6871这是为什么呢?

ChaChing 发表于 2014-8-14 22:12

本帖最后由 ChaChing 于 2014-8-14 22:14 编辑

直觉是std中n与n-1之间的差异,所以好奇查了下kurtosis的算法(可以edit kurtosis查),不难发生其中是以mean的方式求解
也就是说kurtosis的std是採用n的方式

类似matlab内存函数方式
xm=x-mean(x); k=mean(xm.^4)/(mean(xm.^2))^2
直接公式方式
xm=x-mean(x); k=mean(xm.^4)/(std(x,1))^4

ps:可以的话,请注意解决问题的过程

2658744907 发表于 2014-8-14 22:54

刚刚接触matlab,多谢指点!!!

2658744907 发表于 2014-8-14 22:56

ChaChing 发表于 2014-8-14 22:12
直觉是std中n与n-1之间的差异,所以好奇查了下kurtosis的算法(可以edit kurtosis查),不难发生其中是以mean的 ...

多谢指点
页: [1]
查看完整版本: matlab求峭度,用公式和自己编写的代码分别求,结果不一样