#偏度
本文是采用matlab中计算偏度的公式,然后用C语言实现。
#include<stdio.h>
#include<math.h>
double mean(double a[128], double len)
{
double sum = 0;
double mean = 0;
//求和
for (int i = 0; i < len; i++)
{
sum += a[i];
}
//计算均值
mean = sum / len;
return mean;
}
double skewness(double a[128], double len)
{
double ske_mean = 0;
double s1 = 0;
double s0 = 0;
double x_xmean_2 = 0;
double x_xmean_3 = 0;
//均值
ske_mean = mean(a, len);
for (int i = 0; i < len; i++)
{
x_xmean_2 += (a[i] - ske_mean)*(a[i] - ske_mean);
x_xmean_3 += (a[i] - ske_mean)*(a[i] - ske_mean)*(a[i] - ske_mean);
}
s1 = ((1 / len)*x_xmean_3) / pow(sqrt((1 / len)*x_xmean_2),3);
s0 = sqrt(len*(len - 1))*s1 / (len - 2);
//根据计算偏度的不同选择返回s1或者s0
return s0;
}