C语言在测量和控制中的应用资源第5章-数据的处理与绘.ppt_第1页
C语言在测量和控制中的应用资源第5章-数据的处理与绘.ppt_第2页
C语言在测量和控制中的应用资源第5章-数据的处理与绘.ppt_第3页
C语言在测量和控制中的应用资源第5章-数据的处理与绘.ppt_第4页
C语言在测量和控制中的应用资源第5章-数据的处理与绘.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 数据的处理与绘图,哈尔滨工业大学航天学院,C语言在测量与控制中的应用系列课件,5.2 曲线的绘制,Turbo C 提供了功能较强的绘图功能,包括图形库文件graphics.lib,图形头文件 graphics.h,显示器驱动程序,字符集字体驱动程序等。,显示器的工作方式: 1.文本显示方式,80 25字符分辨率 , 即整个屏幕25行,每行80个字符。 2.图形显示方式,nm点阵,如VGA显示器 640 480点阵。,CRT的坐标,(0,0),如果分辨率是640 480 x轴 0639,y轴 0479 纵坐标正方向向下,图形系统的初始化函数,initgraph( 1.dirver 图形驱

2、动程序代码,图形驱动程序在系统提供的.BGI文件中。,2.mode 图形模式代码,选择分辨率和色调。,3.path 图形驱动程序的路径,要用双引号括起,若在当前目录下可用空串“ ”代替。,清屏函数,清屏函数 cleardevice() 清除整个屏幕,并将当前画笔坐标置为(0,0),即屏幕左上角。 函数使用的一般方式: cleardevice( ) ;,设置背景颜色函数,setbkcolor( int c); 参数 c 的取值与所对应的颜色: 0:黑,1:兰,2:绿,3:青,4:红,5:紫红,6:棕,7:浅灰,8:深灰,9:浅蓝,10:淡绿,11:淡灰,12:淡红,13:淡紫红,14:黄,15:

3、白,关闭图形模式函数 closegraph() 该函数关闭图形系统,返回文本方式。 closegraph( );,自动检测图形显示卡,该程序将图形驱动器代码设为DETECT,即自动检测图形显示卡,装入相应的驱动程序,且选用最高分辨率的图形模式。#include main( ) int driver=DETECT,mode; initgraph( ,circle( ) 画圆函数,3个参数分别为 圆心的x轴坐标、y轴坐标和半径。,图形驱动程序,选择“自动检测图形显示卡,装入相应的驱动程序”时选择的驱动程序是 EGAVGA.BGI 分辨率为640*480 颜色为16色,EGAVGA.BGI文件应在指

4、定路径或当前目录下,否则执行EXE文件时找不到驱动程序,无法画图。屏幕上显示:,BGI Error: Graphics not initialized(use “initgraph”),两点之间画直线函数line( ),line(int x0, int y0, int x1, int y1); 在(x0,y0)与(x1,y1) 之间画一条直线,如: line(40,20,80,100);,画矩形框函数 rectangle() rectangle(int left , int top ,int right ,int bottom); 画一矩形框,左上角坐标为(left,top),右下角坐标为(r

5、ight,bottom)。,设置当前画线颜色函数,setcolor( int c); 将当前画线颜色设置为参数c所指定的颜色。 0:黑,1:蓝,2:绿,3:青,4:红,5:洋红, 20:棕,7:浅灰,56:深灰,57:浅蓝,58:浅绿,59: 浅清,60:浅红,61:浅洋红,62:黄,63:白,设定线型函数,setlinestyle(int l,unsigned m,int w); 1. l 线的形状,0:实线,1:点线,2:中心线,3:点划线, 4:用户自定义线 2. m 在l=4 时才有意义,16位每位代表一个象素,该位为1时显示该象素,0不显示。 3. w 线的宽度,1:一个象素宽,3:

6、三个象素宽。 不使用该函数,默认值为一个象素宽的实线。,画点(象素)函数,putpixel(int x, int y, int color); 在坐标指定位置(x,y) 上画一个点,点的颜色由color确定.,在矩形框中画正弦曲线,#include #include #include main() int driver=DETECT,mode,x00,x11,y00,y11,m,k; int data256,x1,x2; initgraph( ,图形方式下的字符输出,1.定位字符串输出函数 outtextxy(int x ,int y, char *str ); 在图形方式下,在指定位置(x,

7、y)处,输出str 所指向的字符串。,2.设置字体大小和方向函数 settextstyle( int font, int direction, int size ); 其中:font确定字体 0:88点阵,1:三倍笔划字体 2:小号笔划字体,3:无衬线笔划字体,4:黑体笔划字体。 direction=0: 水平输出,direction=1: 垂直输出。 size 是增加字符大小的倍数 010。,将浮点数转换成字符串函数,函数原型: char *gcvt(double value, int n, char *buf); value 是双精度浮点数的值; n是字符个数; buf是指向字符串的指针。

8、,该函数将value转换成一空字符NULL为结束标志的ASCII字符串,并将字符串存到buf指向的内存。 该函数返回buf所指向的字符串的地址。 gcvt( )函数由头文件 dos.h 说明。,在图形模式下显示字符,#include #include #include main() int driver=DETECT,mode,x00,x11,y00,y11,m; int data256,x1,x2,xstep,ystep,k; char stt10; double value; initgraph(,line(x00,m,x11,m); xstep=(x11-x00)/16; ystep=(

9、y11-y00)/8; for(k=0;k=16;k+) line(x00+xstep*k,y11,x00+xstep*k,y11+5); value=xstep*k/2; gcvt(value,3,stt); outtextxy(x00+xstep*k-8,y11+8,stt); for(k=0;k=8;k+) line(x00-5,y00+ystep*k,x00,y00+ystep*k); x1=x00; setcolor(2); for(k=0;k254;k+) x2=x1+2; line(x1,m-datak,x2,m-datak+1); x1=x2; getch(); closegr

10、aph(); ,画图效果,5.3 频谱分析快速傅立叶变换,哈尔滨工业大学航天学院,C语言在测量与控制中的应用系列课件,离散傅立叶变换,傅立叶变换将时间域的问题转换成频率域的问题进行研究,可以展示出时域信号的一些特点,可使研究的问题简化。 对由等周期采样得到的离散数据进行的傅立叶变换,称为离散傅立叶变换 DFT 。快速傅立叶变换 (FFT)算法往往要求进行离散傅立叶变换 的数据个数为2的整数次方,即 N=2r ,r为正整数。 离散傅立叶变换 与逆变换对的公式:,快速傅立叶变换函数fftt2(),int fftt2(double *x , double *y , int n , double f)

11、; 其中:n 离散数据的点数,取2的整数次方,x 变换前后离散数据的实部 y 变换前后离散数据的虚部,fftt2()的使用,函数fftt2()在文件 fftt2.c中,使用文件包含预处理的方法将其包括在主程序的原文件中 #include “fftt2.c”,若A/D采集12位数据减2047变成补码形式后放入整型数组,为进行FFT 要定义两个双精度数组,分别放离散数据的实部和虚部。 doubledx512 , dy512; 实部数组放采集的数据,虚部数组放 0.0 。,求离散频谱的模和相角,fft(double *xx,double *yy,int n,double dd) double aa,

12、bb; printf(n FFT.n); if(fftt2(xx,yy,n,dd)= =0) for(i=0;i=n-1;i+) aa=sqrt(*(xx+i)*(*(xx+i)+(*(yy+i)*(*(yy+i); bb=atan2(*(yy+i),(*(xx+i); *(xx+i)=aa; *(yy+i)=bb; printf(n FFT OK .n); else printf(n FFTERRORn); ,主函数中调用语句 fft(dx,dy,256,-1.0);,频谱分辨率,频谱分辨率是指经FFT变换后所产生的离散频谱分量的增量f。FFT算法所能分辨的最小频谱增量f由时间记录长度TL决定。 TL=NT N 采样点数,T 采样周期 f=1/NT=1/ TL,若 T=10ms=0.01s , N=256 NT=2.56 s f=1/NT=1/2.56=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论