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

📄 卷积.txt

📁 信号系统常用程序.卷积/傅立叶级数/频谱分析/调制解调等
💻 TXT
字号:
#include "graphics.h"
#include "conio.h"
#include "math.h"
#include "stdio.h"
#define E 100
#define N 640

void jianto(int x,int y,int drection)
{
	if(drection==0)
	{
		line(x,y,x-5,y-5);
		line(x,y,x-5,y+5);
	}
	else
	{
		line(x,y,x-5,y+5);
		line(x,y,x+5,y+5);
	}
}


void backg2()
{
	bar(0,getmaxy()/4,getmaxx(),getmaxy()/2);
	line(0,getmaxy()/2,getmaxx(),getmaxy()/2);
	jianto(getmaxx(),getmaxy()/2,0);
	line(getmaxx()/2-50,getmaxy()/2,getmaxx()/2-50,getmaxy()/4);
	jianto(getmaxx()/2-50,getmaxy()/4,1);
	line(0,getmaxy()/4,getmaxx(),getmaxy()/4);
	jianto(getmaxx(),getmaxy()/4,0);
}

void sjx(int x1,int y1,int x2,int y2,int x3,int y3)
{
	int points[8];
	points[0]=x1;
	points[1]=y1;
	points[2]=x2;
	points[3]=y2;
	points[4]=x3;
	points[5]=y3;
	points[6]=x1;
	points[7]=y1;
	drawpoly(4,points);
}

main()
{
	int i,j;	
	int k,l,l0;
	int m,n;
	int point;
	int x[N];
	double y1[N];
	double y2[N];
	double z[N];
	double y12[N];

	int ly1=150,ly2=200;

	int gmode;
	int gdriver=DETECT;
	initgraph(&gdriver,&gmode,"\\tc\\bin");

	setfillstyle(1,1);
	bar(0,0,getmaxx(),getmaxy()/4);
	setfillstyle(1,4);
	bar(0,getmaxy()/2,getmaxx(),getmaxy());
	setfillstyle(1,0);
	bar(0,getmaxy()/4,getmaxx(),getmaxy()/2);

	setcolor(2);

	line(0,getmaxy()/4,getmaxx(),getmaxy()/4);
	jianto(getmaxx(),getmaxy()/4,0);
	line(0,getmaxy()/2,getmaxx(),getmaxy()/2);
	jianto(getmaxx(),getmaxy()/2,0);
	line(0,getmaxy()*3/4,getmaxx(),getmaxy()*3/4);
	jianto(getmaxx(),getmaxy()*3/4,0);
	line(getmaxx()/2-50,0,getmaxx()/2-50,getmaxy());
	jianto(getmaxx()/2-50,0,1);
	jianto(getmaxx()/2-50,getmaxy()/4,1);
	jianto(getmaxx()/2-50,getmaxy()/2,1);	
	for(i=0;i<N;i++)
	{
		x[i]=i;
		y1[i]=0;
		y2[i]=0;
		z[i]=0;
		y12[i]=0;
	}

	for(i=(int)(getmaxx()/2-100);i<getmaxx()/2+50;i++)
		y1[i]=1;

	for(i=0;i<200;i++)
		y2[(int)(i+getmaxx()/2-50)]=(i*0.1)/(2*E*0.1);

	for(i=0;i<getmaxx();i++)
		z[i]=y2[2*(getmaxx()/2-50)-i];
	moveto(x[0],getmaxy()/4-y1[i]);
	for(i=1;i<N;i++)
		lineto(x[i],getmaxy()/4-E*y1[i]);

	moveto(x[0],getmaxy()/2-y2[0]);
	for(i=1;i<N;i++)
		lineto(x[i],getmaxy()/2-E*y2[i]);

	getch();
	backg2();
	moveto(x[0],getmaxy()/2-z[0]);
	for(i=1;i<N;i++)
		lineto(x[i],getmaxy()/2-E*z[i]);
	getch();

	for(i=getmaxx()-1;i>=0;i--)
	{
		if(z[i]!=0)
			break;
	}
	n=i;
	for(j=0;j<getmaxx();j++)
	{
		if(y1[j]!=0)
			break;
	}
	m=j;

	point=m-n;
	
	for(i=0;i<getmaxx();i++)
	{
		if(z[i]!=0)
			break;
	}
	k=i;l=i,l0=i;

	for(i=0;i<200;i++)
	{
		z[k+point+i]=z[k+i];
		z[k+i]=0;
	}

	backg2();
	moveto(x[0],getmaxy()/2-z[0]);
	for(i=1;i<N;i++)
		lineto(x[i],getmaxy()/2-E*z[i]);
	getch();
	
	for(i=0;i<350;i++)
	{
		for(j=0;j<200;j++)
		{
			y12[(int)(getmaxx()/2-50+point+i)]=y12[(int)(getmaxx()/2-50+point+i)]+0.01*z[k+point+j]*y1[l+point+j];
		}
		l=l+1;
		moveto(x[0],getmaxy()*3/4-y12[0]);
		for(j=0;j<getmaxx();j++)
			lineto(x[j],getmaxy()*3/4-E*y12[j]);
		bar(0,getmaxy()/4,getmaxx(),getmaxy()/2);
		backg2();
		sjx((int)(k+point+i),(int)(getmaxy()/2),(int)(k+point+i),(int)(getmaxy()/2-100),(int)(k+point+i+200),(int)(getmaxy()/2));
		getch();
	} 	

	outtextxy(200,getmaxy()-20,"over");
	for(i=0;i<10;i++)
		getch();
	closegraph();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -