⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 o褶积p93_1文件输出.cpp

📁 做一信号的合成记录方式,以脉冲和系数褶积生成记录
💻 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 + -