python mk趋势检验_【C语言】MK趋势检验C语言代码
[C] 純文本查看 復制代碼#include
#include
void main()
{
FILE *fp;
char filename[40] ;
int i,j,k;//循環用
int h,l;//行、列
h=13;
l=400;
float da[13][400] = {0};
int s[13]={0};//存s值
float z[13]={0};//存z值
float p[13]={0};//存p值
int t[13]={0};//存趨勢
printf(" 輸入文件名: ");
gets(filename);
fp=fopen(filename,"r"); // fp指針指向文件頭部
for(i = 0 ;i < h ; i++)//行循環
{
for(j = 0 ;j < l ; j++)//列循環
{
fscanf(fp,"%f",&da[i][j]);
fseek(fp, 1L, SEEK_CUR); /*fp指針從當前位置向后移動*/
}
}
//求s,正負數的總量
float a=0.0;//存儲差
for(i=0;i
for(j=0;j
for(k=j+1;k
a=da[i][k]-da[i][j];
if(a>0){
s[i]+=1;
} else if(a<0){
s[i]-=1;
}
}
}
//printf("%d\n",s[i]);//這行當時檢驗用
}
//求z,為后面求p鋪墊
float var;//存儲方差
var=l*(l-1)*(2*l+5)/18;
var=sqrt(var);
for (i=0;i
if (s[i]>0){
z[i]=(s[i]-1)/var;
} else if (s[i]<0){
z[i]=(s[i]+1)/var;
} else {
z[i]=0;
}
//printf("%f\n",z[i]);//這行當時檢驗用
}
//求p,置信度
//這是單側檢驗的p值,雙側檢驗需要把下面2.32和1.64的值換掉,,換成多少度娘一下,我忘了,也可以選擇excel里面函數轉換
for(i=0;i
if(fabs(z[i])>=2.32){
p[i]=0.01;
}else if (fabs(z[i])>=1.64){
p[i]=0.05;
} else {
p[i]=0;
}
//printf("%d\t%.4f\t%.2f\n",s[i],fabs(z[i]),p[i]);//這行當時檢驗用
}
//求t,趨勢,1是增加趨勢,-1是減少趨勢
for (i=0;i
if(p[i]!=0){
if(z[i]>0){
t[i]=1;
} else if(z[i]<0){
t[i]=-1;
}
}
//printf("%d\n",t[i]);
}
//打印查看//這幾行當時檢驗用
/*for(i=0;i
printf("%d %d\t%.3f\t%.2f\t%d\n",i+1,s[i],z[i],p[i],t[i]);
} */
//FILE *fp;
fp=fopen("globe.xls","w");
for(i=0;i
fprintf(fp,"%d\t%.3f\t%.2f\t%d\n",s[i],z[i],p[i],t[i]);
}
fclose(fp);//輸出成excel,其中fp=fopen("globe.xls","w");中的globe.xls可以自己命名
}
總結
以上是生活随笔為你收集整理的python mk趋势检验_【C语言】MK趋势检验C语言代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定时器回调函数怎么写_ESP8266_0
- 下一篇: python标准库有多强大_Python