一个简单的编程题(matlab或者C++)

2025-03-10 13:53:30
推荐回答(5个)
回答1:

我的通用运算子程序送给你,自己写一个主程序串起来就可以了。
get_x() -- 产生NN个[0,1] 随机数
get_kurtosis() -- 4阶矩和kurtosis计算
get_skew()-- 3阶矩和skew计算
y_statistics()-- 标准统计。最大,最小,平均(你要的),标准差(你要的std),和RMS计算。

void get_x(float *x, int NN)
{
int i;
srand((unsigned)time(NULL));
for (i=0;ix[i]= (float) ( (rand() % 100+1) / 100.0 );
};
}

void get_kurtosis(float *y, int NN, double *kurtosis)
{
double sum=0.0,ymean;
int i,j,k;
double dy,m4=0.0,m2=0.0;

for (i=0;iymean = sum / (double) NN;

for (i=0;idy = y[i] - ymean;
m4 = m4 + dy*dy*dy*dy;
}

for (i=0;idy = y[i] - ymean;
m2 = m2 + dy*dy;
}
*kurtosis = (double)(NN) * m4 / m2 / m2 - 3.0;
}

void get_skew(float *y, int NN, double *skew)
{
double sum=0.0,ymean;
double dy,m3=0.0,m2=0.0;
int i,j,k;
for (i=0;iymean = sum / (double) NN;

for (i=0;idy = y[i] - ymean;
m3 = m3 + dy*dy*dy;
}

for (i=0;idy = y[i] - ymean;
m2 = m2 + dy*dy;
}
m2 = pow(m2, 3.0/2.0);
*skew = sqrt(NN) * m3 / m2;
}

/* ---------------------------------------------------
* y_statistics()
* total points NN, sample in y[]
* N = NN -1
* --------------------------------------------------*/
void y_statistics(float *y, int NN, double *ymin, double *ymax, double *ymean, double

*ystd, double *yrms)
{
int i;
double yd,yu,ym,ys,yr,dy;
double sum,sum2;
int N;

N = NN - 1;

yd = (double)y[0]; yu= (double)y[0];
sum = 0.0;
for (i=0;i<=N;i++){
sum = sum + (double)y[i];
if ((double)y[i] > yu) yu = (double)y[i];
if ((double)y[i] < yd) yd = (double)y[i];
};

ym = sum / (double) (N + 1) ; // mean, will be used in standard deviation
*ymin = yd; *ymax = yu;
*ymean = ym;

sum2 = 0.0;
for (i=0;i<= N;i++){ sum2 = sum2 + (double)y[i] * (double)y[i]; };
*yrms = sqrt( sum2 / (double) (N + 1) );

sum = 0.0;
for (i=0;i<=N;i++){
dy = (double)y[i] - ym;
sum = sum + dy * dy;
};
*ystd = sqrt( sum / (double) (N+1-1) ); // sigma add "-1"
}

回答2:

matlab做,很简单。
%=========================
clc;clear
X=rand(200,1);
Y=rand(200,1);
a=2*X+3;
b= X+Y;
c= X.*Y;
d= X./Y;
A=[a,b,c,d];
Results=[mean(A);std(A);skewness(A);kurtosis(A)];
disp(' AVE STD_DEV SKEW KURT')
disp(Results)
%=======================

结果:
AVE STD_DEV SKEW KURT
4.0303 1.0162 0.2536 6.3546
0.6049 0.4122 0.2256 47.2260
-0.1180 -0.0830 0.8748 12.7436
1.7675 2.3366 2.8390 170.9884

回答3:

=。=这个根本就不是选择题啊。。。是要做出4个不同的东西。。。不过这题并没说是用C++啊,而且Matlab我也不知道是什么。

这题前面说的很容易,可惜后面突然出现了skewness和kurtosis这两个高深的数学专用英文词(我在国外这么多年都没见过,太惭愧了。),无法理解其意,也就没法做了。。。

回答4:

一楼太牛了。。。一句应该是A。。。

回答5:

应该是a