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

(1)用公式: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,... (1)用公式:
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];
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
为什么会这样,自己的代码有错吗?
可以加分!
展开
 我来答
dukinkin
2014-08-14 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:900万
展开全部

其实都没有错


计算标准差的时候有两种定义


在用matlab的std函数计算x的标准差时

std(x,0) 返回第一种

std(x,1) 返回第二种

由于第一种是默认结果所以std(x),想当于std(x,0),返回第一种定义的标准差



你试一下将你代码里e=std(x).*std(x).*std(x).*std(x);

里面的 std(x) 都改成std(x,1),或者简单点写

e=std(x,1).^4


你会发现结果跟用kurtosis(x)所出来的是一致的

那么就是说kurtosis计算是用的标准差是第二中定义


如果样品数n比较大,那么除以n和除以n-1的结果就相差不大了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式