主题:滤波程序出不了结果 高手看下
#include<stdio.h>
#include<math.h>
#define N 300 /*N为谱数据的总道数*/
char head[155];
double ypu[N],lvbo[N],bdi[N],jfeng[N],zj[N];
void main(void)
{
int ci;
FILE *fp,*fp1; /*fp为原谱数据文件指针,fp1为写文件指针*/
double w1,w2;
int i,j,k; /*i为道数,k为迭代次数*/
char name[20]; /*文件名*/
printf("Enter ci\n");
scanf("%d",&ci);
printf("Enter the name\n");
scanf("%s",name);
if((fp=fopen(name,"r"))==NULL) /*打开一个文件读数据*/
{
printf("cannot open file:");
exit(0);
}
fread(head,1,155,fp);
printf("%s\n",head);
for(i=0;i<N;i++)
fscanf(fp,"%ld",&ypu[i]);
for(i=0;i<N;i++)
bdi[i]=log(1+log(1+sqrt(ypu[i]+1))); /*原谱数据对数变换*/
for(k=1;k<=ci;k++) /*k次迭代*/
{
for(j=0;j<N;j++)
{
lvbo[j]=bdi[j];
}
for(i=k;i<N-k;i++) /*对第i个数据滤波*/ {
w1=lvbo[i];
w2=(lvbo[i-k]+lvbo[i+k])/2;
bdi[i]=w1<w2?w1:w2;
}
}
for(i=0;i<N;i++)
bdi[i]=(exp(exp(bdi[i]-1)-1))*(exp(exp(bdi[i]-1)-1))-1;/*指数转换后即本底*/
for(i=0;i<N;i++)
jfeng[i]=ypu[i]-bdi[i];
if((fp1=fopen("zjtai.txt","w+"))==NULL) /*净峰计数*/
{
printf("cannot open file:");
exit(0);
}
for(i=0;i<N;i++)
fprintf(fp1,"%f\n",jfeng[i]);
fclose(fp);
fclose(fp1);
getch();
}
小弟学物理的,这个编程不熟悉,高手指点下,感激不尽~~~
#include<math.h>
#define N 300 /*N为谱数据的总道数*/
char head[155];
double ypu[N],lvbo[N],bdi[N],jfeng[N],zj[N];
void main(void)
{
int ci;
FILE *fp,*fp1; /*fp为原谱数据文件指针,fp1为写文件指针*/
double w1,w2;
int i,j,k; /*i为道数,k为迭代次数*/
char name[20]; /*文件名*/
printf("Enter ci\n");
scanf("%d",&ci);
printf("Enter the name\n");
scanf("%s",name);
if((fp=fopen(name,"r"))==NULL) /*打开一个文件读数据*/
{
printf("cannot open file:");
exit(0);
}
fread(head,1,155,fp);
printf("%s\n",head);
for(i=0;i<N;i++)
fscanf(fp,"%ld",&ypu[i]);
for(i=0;i<N;i++)
bdi[i]=log(1+log(1+sqrt(ypu[i]+1))); /*原谱数据对数变换*/
for(k=1;k<=ci;k++) /*k次迭代*/
{
for(j=0;j<N;j++)
{
lvbo[j]=bdi[j];
}
for(i=k;i<N-k;i++) /*对第i个数据滤波*/ {
w1=lvbo[i];
w2=(lvbo[i-k]+lvbo[i+k])/2;
bdi[i]=w1<w2?w1:w2;
}
}
for(i=0;i<N;i++)
bdi[i]=(exp(exp(bdi[i]-1)-1))*(exp(exp(bdi[i]-1)-1))-1;/*指数转换后即本底*/
for(i=0;i<N;i++)
jfeng[i]=ypu[i]-bdi[i];
if((fp1=fopen("zjtai.txt","w+"))==NULL) /*净峰计数*/
{
printf("cannot open file:");
exit(0);
}
for(i=0;i<N;i++)
fprintf(fp1,"%f\n",jfeng[i]);
fclose(fp);
fclose(fp1);
getch();
}
小弟学物理的,这个编程不熟悉,高手指点下,感激不尽~~~