声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1563|回复: 3

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

[复制链接]
发表于 2014-8-14 20:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
(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这是为什么呢?

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2014-8-14 22:12 | 显示全部楼层
本帖最后由 ChaChing 于 2014-8-14 22:14 编辑

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

类似matlab内存函数方式
  1. xm=x-mean(x); k=mean(xm.^4)/(mean(xm.^2))^2
复制代码

直接公式方式
  1. xm=x-mean(x); k=mean(xm.^4)/(std(x,1))^4
复制代码


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

评分

1

查看全部评分

 楼主| 发表于 2014-8-14 22:54 | 显示全部楼层
刚刚接触matlab,多谢指点!!!
 楼主| 发表于 2014-8-14 22:56 | 显示全部楼层
ChaChing 发表于 2014-8-14 22:12
直觉是std中n与n-1之间的差异,所以好奇查了下kurtosis的算法(可以edit kurtosis查),不难发生其中是以mean的 ...

多谢指点
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-4 01:09 , Processed in 0.097996 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表