#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include "graphics.h"
#define N 1000
int gdriver, gmode;
int i;
static int flag=0;
float input[1000],output[1000],n[1000],result[2000],zoom[500];
double pi;
float ymax=0;
/* int gdriver =DETECT,gmode;*/
double gauss(double n0)
{
double u1;
double u0;
double gaussnoise;
u0 = (double)rand()/(double)RAND_MAX;
u1 = (double)rand()/(double)RAND_MAX;
if ( u0 < 1e-100)
{
u0 = 1e-100;
}
gaussnoise = sqrt( -n0*log(u0) )*cos( 2*pi*u1 );
return gaussnoise;
}
/*input display*/
void display()
{
int j,i;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
/* initgraph(&gdriver,&gmode,""); */
setbkcolor(7); /*填充中间的颜色*/
/* setviewport(20,20,619, 459,1); 截出中间部分 600*440 */
bar(39,39,599,439);
/*画边框*/
setcolor(8);
setlinestyle(0,0,1);
line(39,39,39,439);
line(39,39,599,39);
line(39,439,599,439);
line(599,39,599,439);
}
void plotinput()
{
double t;
float ylabel[50],xlabel[50];
char w[50],s[50];
ymax=0;
/*find ymax*/
for(i=0;i<N;i++)
{
if(fabs(input[i])>ymax)
ymax=input[i];
}
/*title*/
setcolor(RED);
outtextxy(280,30,"Input Wave");
/* 纵坐标 */
setcolor(BLACK);
setlinestyle(1,0,1);
line(39,39+100,599,100+39);
line(39,39+200,599,200+39);
line(39,39+300,599,300+39);
/*y*/
for(i=0;i<5;i++)
{
ylabel[i]=ymax*(2-i)/2;
}
for(i=0;i<5;i++)
{
sprintf(s,"%2.2f",ylabel[i]);
setcolor(RED);
settextstyle(0,0,1);
outtextxy(0,35+i*100,s);
}
/*画横坐标*/
setcolor(BLACK);
for(i=1;i<4;i++)
{
line(39+140*i,39,39+140*i,439);
}
/*x*/
for(i=0;i<5;i++)
{
xlabel[i]=1000*i/4;
}
for(i=0;i<5;i++)
{
sprintf(w,"%.0f",xlabel[i]);
t=(double)i;
setcolor(RED);
settextstyle(0,0,1);
outtextxy(35+140*i,444, w);
}
/*input xulie*/
setcolor(RED);
setlinestyle(0,0,1);
for(i=0;i<N-1;i++)
{
t=(double)i;
line(39+560*t/(N-1),239-(input[i]/ymax)*200,39+560*(t+1)/(N-1),239-(input[i+1]/ymax)*200);
}
}
void plotoutput()
{ double t;
/*find ymax*/
float ylabel[50],xlabel[50];
char w[50],s[50];
ymax=0;
setcolor(RED);
outtextxy(275,30,"Input + Noise");
for(i=0;i<N;i++)
{
if(fabs(output[i])>ymax)
ymax=output[i];
}
/*y*/
for(i=0;i<5;i++)
{
ylabel[i]=ymax*(2-i)/2;
}
for(i=0;i<5;i++)
{
sprintf(s,"%2.2f",ylabel[i]);
setcolor(RED);
settextstyle(0,0,1);
outtextxy(0,35+i*100,s);
}
/* 纵坐标 */
setcolor(BLACK);
setlinestyle(1,0,1);
line(39,39+100,599,100+39);
line(39,39+200,599,200+39);
line(39,39+300,599,300+39);
/*画横坐标*/
for(i=1;i<4;i++)
{
line(39+140*i,39,40+140*i,439);
}
/*x*/
for(i=0;i<5;i++)
{
xlabel[i]=1000*i/4;
}
for(i=0;i<5;i++)
{
sprintf(w,"%.0f",xlabel[i]);
t=(double)i;
setcolor(RED);
settextstyle(0,0,1);
outtextxy(35+140*i,444, w);
}
/*input xulie*/
setcolor(RED);
setlinestyle(0,0,1);
for(i=0;i<N-1;i++)
{
t=(double)i;
line(39+560*t/(N-1),239-(output[i]/ymax)*200,39+560*(t+1)/(N-1),239-(output[i+1]/ymax)*200);
}
}
void cor()
{ int i,j;
for(j=0;j<N;j++)
for(i=0;i<N;i++)
{
result[999+j]+=(output[i]*output[j+i])/N;
result[999-j]=result[999+j];
}
}
void plotresult()
{ double t;
/*find ymax*/
float ylabel[50],xlabel[50];
char w[50],s[50];
ymax=0;
for(i=0;i<1999;i++)
{
if(fabs(result[i])>ymax)
ymax=result[i];
}
setcolor(RED);
outtextxy(275,30,"Autocorrelation");
/* 纵坐标 */
setcolor(BLACK);
setlinestyle(1,0,1);
line(39,39+100,599,100+39);
line(39,39+200,599,200+39);
line(39,39+300,599,300+39);
/*画横坐标*/
for(i=1;i<4;i++)
{
line(39+140*i,39,40+140*i,439);
}
/*y*/
for(i=0;i<5;i++)
{
ylabel[i]=ymax*(2-i)/2;
}
for(i=0;i<5;i++)
{
sprintf(s,"%2.2f",ylabel[i]);
setcolor(RED);
settextstyle(0,0,1);
outtextxy(0,35+i*100,s);
}
/*x*/
for(i=0;i<5;i++)
{
xlabel[i]=2000*i/4-1000;
}
for(i=0;i<5;i++)
{
sprintf(w,"%.0f",xlabel[i]);
t=(double)i;
setcolor(RED);
settextstyle(0,0,1);
outtextxy(35+140*i,444, w);
}
/*input xulie*/
setcolor(RED);
setlinestyle(0,0,1);
for(i=0;i<1999;i++)
{
t=(double)i;
line(39+560*t/1998,239-(result[i]/ymax)*200,39+560*(t+1)/1998,239-(result[i+1]/ymax)*200);
}
}
void cover()
{
setbkcolor(15);
setcolor(8);
setlinestyle(0,0,3);
for(i=0;i<2;i++)
{
line(129+130*2*i,59,129+130*2*i,119);
line(129+130*2*i,59,229+130*2*i,59);
line(129+130*2*i,119,229+130*2*i,119);
line(229+130*2*i,59,229+130*2*i,119);
}
for(i=0;i<2;i++)
{
line(129+130*2*i,179,129+130*2*i,239);
line(129+130*2*i,179,229+130*2*i,179);
line(129+130*2*i,239,229+130*2*i,239);
line(229+130*2*i,179,229+130*2*i,239);
}
circle(309,89,20);
line(299,89,319,89);
line(309,79,309,99);
/*jiantou*/
setcolor(RED);
setlinestyle(0,0,3);
line(229,89,289,89);
line(279,79,289,89);
line(279,99,289,89);
line(329,89,389,89);
line(379,79,389,89);
line(379,99,389,89);
line(229,209,309,209);
line(309,209,309,109);
line(299,119,309,109);
line(319,119,309,109);
line(359,89,359,209);
line(359,209,389,209);
line(379,199,389,209);
line(379,219,389,209);
line(269,89,269,159);
line(269,159,359,159);
line(349,149,359,159);
line(349,169,359,159);
line(439,119,439,179);
line(429,169,439,179);
line(449,169,439,179);
/*wen zi*/
settextjustify(LEFT_TEXT,CENTER_TEXT);
outtextxy(159,89,"Cosine");
outtextxy(419,89,"Autocor");
outtextxy(159,209,"Noise");
outtextxy(419,209,"Scope");
setcolor(13);
outtextxy(179,299,"C or c---Cosine Wave");
outtextxy(179,319,"N or n---Noise");
outtextxy(179,339,"A or a---Autocorelation");
outtextxy(179,359,"I or i---Zoom In");
outtextxy(179,379,"O or o---Zoom Out");
outtextxy(179,399,"G or g---Grid on/off");
outtextxy(179,419,"R or r---Return");
}
void grid()
{
if((flag/2)==0)
{/* 纵坐标 */
setcolor(15);
setlinestyle(0,0,1);
line(39,39+100,599,100+39);
line(39,39+200,599,200+39);
line(39,39+300,599,300+39);
/*画横坐标*/
for(i=1;i<4;i++)
{
line(39+140*i,39,40+140*i,439);
}
}
else
{/* 纵坐标 */
setcolor(BLACK);
setlinestyle(0,0,1);
line(39,39+100,599,100+39);
line(39,39+200,599,200+39);
line(39,39+300,599,300+39);
/*画横坐标*/
for(i=1;i<4;i++)
{
line(39+140*i,39,40+140*i,439);
}
}
flag++;
}
void zoomin()
{
int i;
float t,ylabel[50],xlabel[50];
char w[30],s[30];
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver, &gmode, "c:\\caic\\bgi");
setbkcolor(7); /*填充中间的颜色*/
/* setviewport(20,20,619, 459,1); 截出中间部分 600*440 */
bar(39,39
autocorr.rar_hardbz9_自相关_自相关 c_自相关c语言_自相关函数
版权申诉
100 浏览量
2022-07-14
21:28:15
上传
评论
收藏 2KB RAR 举报
小波思基
- 粉丝: 74
- 资源: 1万+
最新资源
- Anaconda3-2024.02-1-Windows-x86-64.exe
- stm32cubemx can通信 一个板子负责传感器采集 一个板子负责wifi传递到网页 网页可控制传感器板子.zip
- k8s集群搭建1.27.1版本(来源于图灵k8s笔记)
- 树莓派连接 DS18B20 温度传感器读取温度时监控客户端,服务器端连接状况,实现断线重连机制
- 小游戏-坦克大战,你认为的小游戏
- 最好用的富文本编辑器wangeditor
- jQuery 3.7.1
- 校园失物招领小程序源码可作毕业设计
- SAP客户端GUI740安装包(JAVA版本)
- winlibs-x86-64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64msvcrt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0