📄 o褶积p93_1文件输出.cpp
字号:
#include<stdio.h>
#include"math.h"
#define PI 3.1415926
#define n 50
void main()
{
int i,j,t0;
float x[n],h[n-20],y[n]={.0},r[n]={0.0},max;
void hfc(int ,float h[]);
void rfc(float y[],float r[]);
void writeto(float yw[]);
void writeto2(float yw[]);
for(i=0;i<n;i++)
x[i]=1.0;
hfc(30,h);
writeto(h);
for(i=0;i<n;i++)
for(j=0;j<n-20;j++)
y[i+j]=x[i]*h[j]+y[i+j];
printf("x[n]={1.0}对应的褶积为: n y[n] \n");
for(i=0;i<n;i++)
printf(" %-2d %f \n",i+1,y[i]);
writeto2(y);
rfc(y,r);
t0=20;
printf("***********相关函数输出********\n");
max=r[t0];
for(i=0;i<n;i++)
{
if(max<r[i])
{max=r[i];
t0=i;
}
printf(" *%-2d %f\n",i+1,r[i]);
}
printf("*******************\n");
printf("t0的值是:%d\n",t0);
printf("*******************\n");
}
void hfc(int n1,float h[])
{
int i;
float T,f=30,a,M=2.0,t;
T=1/f;
a=float(2*f*f*log(M));
printf("******相关参数是:N=50,M=2.0,f=30*****\n");
printf("h[n]输出为:\n");
for(i=0;i<n1;i++)
{
t=(float)(0.004*i);
h[i]=(float)(exp((-a)*t*t)*sin(2*PI*f*t));
printf("h[%2d]=%f\t",i+1,h[i]);
if((i+1)%2==0)
printf("\n");
}
}
void rfc(float y[],float r[])
{
int i,j,n0=20;//移动的序列单位个数!
float g[70]={0.0};
for(i=0;i<n;i++)
g[i+n0]=y[i];
for(i=0;i<n;i++)
{ for(j=i;j<n;j++)
r[i]=g[j]*y[j-i]+r[i]; //计算相关函数!
}
printf("*****子程序运行完毕*****\n");
}
/****************文件输出子程序******************/
void writeto(float yw[])
{
FILE *fp;
int k;
fp=fopen("采样数据.txt","w");
for(k=0;k<50;k++)
fprintf(fp,"%f\n",yw[k]);
fclose(fp);
}
void writeto2(float yw[])
{
FILE *fp;
int k;
fp=fopen("褶积数据.txt","w");
for(k=0;k<50;k++)
fprintf(fp,"%f\n",yw[k]);
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -