成信工智能仪器设计课件第4章 智能仪器的数据处理技术_第1页
成信工智能仪器设计课件第4章 智能仪器的数据处理技术_第2页
成信工智能仪器设计课件第4章 智能仪器的数据处理技术_第3页
成信工智能仪器设计课件第4章 智能仪器的数据处理技术_第4页
成信工智能仪器设计课件第4章 智能仪器的数据处理技术_第5页
已阅读5页,还剩23页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第四章智能仪器中的数据处理技术§4.1数学运算及常用函数法§4.2数据结构与典型的数据操作4.1.1数的表示方法浮点数浮点数(1)4字节浮点数D7D6D5D4D3D2D1D0地址数符尾数高7位DPTR+3尾数中8位DPTR+2尾数低8位DPTR+1阶码(+127)DPTR浮点数(1)3字节浮点数D7D6D5D4D3D2D1D0地址数符阶符阶码(+127)DPTR+2尾数高8位DPTR+1尾数低8位DPTR浮点数的加减运算(1)对阶(小阶对大阶)(2)结果数的规格化操作(3)浮点数的加减4.1.3常用函数的算法多项式运算泰勒级数基于迭代法的运算1)多项式运算

写成便于具有循环结构的形式初值:循环体:2)泰勒级数1、对SIN的计算(2)自然指数的计算(一)利用x/ln2求出结果的阶码(二)对后面部分展开得尾数(2)自然对数的计算3)基于迭代法的运算§4.2数据结构与典型的数据操作4.2.1线形表查找技术4.2.2排序4.2.1线形表查找技术

1、循序查找2、对半查找3、直接查找一、查表

所谓查表法就是把事先计算或测得的数据按照一定顺序编制成表格,根据被测参数的值或者中间结果,查出最终所需要的结果。

循序查找顺序查找就是从头开始,按照顺序把表中的元素项逐一地与给定的关键字进行比较。直接查找(LED)AJCB:MOVDPTR,#TABMOVA,R0MOVCA,@A+DPTRMOVDPTR,#PORTMOVX@DPTR,ARETTAB:DB3FH,06H,5BH,4FH,66H,6DH;DB7DH,07H,7FH,6FH;对半查找有序表的数据排列有一定规律,可以采用对半查找;就是每次截取表的一半,确定元素在哪一部分,逐步细分,缩小检索范围,从而大大加快查找速度。下页上页返回1.取数组中间的值mid和要搜索的值key相比较2.若key=mid,查找完毕。3.若,继续查找,取之间的中间值与key比较取之间的中间值与key比较4.直到找到搜索的数值或搜索区间为0。适用范围:数组已按大小顺序排列好采用对分查找减少搜索次数。进行对半查找时,需要设置两个指针LO和HI,分别保存低界和高界元素的序号。1、开始时,LO=0,HI=N-1。中心为[(LO+HI)/2]2、计算中心元素的地址AM=表首地址+(MI)*L根据中心元素的地址的位置可找出中心元素,并比较。如小于中心元素,则取低半表。

修改高界指针HI。

HI=MI-L。3、如相等,则成功。YYN开始i

0,j

N-1计算midd(mid)=key?Ni

mid+1j

mid-1N继续查找?输出“未找到”Y输出找到的信息结束i≤jmid=(i+j)\2d(mid)<key?对半查找子程序int

BinSearch(SeqList

R,KeyType

k,int

low,inthigh)//试写出二分查找的递归算法

#definen10

typedef

int

KeyType;

typedef

struct{

KeyTypekey;

InfoType

otherinfo;}NodeType;

typedef

NodeTypeSeqList[n+1];

int

BinSearch(SeqList

R,KeyType

k,int

low,inthigh){

intmid=(low+high)/2;

if(R[mid].key==k)return(mid);elseif(low>=high)return(0);elseif(R[mid].key>k)return(BinSearch(R,k,low,mid-1));elsereturn(BinSearch(R,k,mid+1,high));}int

BinSearch(SeqList

R,KeyTypek)//写一算法在有序表R[1..n]中进行二分查找,成功时返回结点的位置,失败时返回零

#definen10

typedef

int

KeyType;

typedef

struct{KeyType

key;InfoType

otherinfo;}NodeType;

typedef

NodeTypeSeqList[n+1];

int

BinSearch(SeqList

R,KeyTypek){intlow=1,high=n,mid;

while(low<=high){mid=(low+high)/2;

if(R[mid].key==k)return(mid);

if(R[mid].key>k)

high=mid-1;elselow=mid+1;}return(0);}4.2.2排序

1、冒泡排序2、希尔排序冒泡排序依次比较两个相邻的一对数据,如不符合规定的递增顺序,则交换两个数据的位置,比较依次进行,直到最后位置完成第一轮比较。而后进行第二轮比较,直到完成。冒泡排序

voidBubbleSort(SeqListR)//写一算法R[1..n]是待排序的记录,采用自下而上扫描对R作冒泡排序

#definen10

typedef

int

KeyType;

typedef

struct{KeyTypekey;InfoType

otherinfo;}RecType;

typedef

RecTypeSeqList[n+1];voidBubbleSort(SeqListR){int

i,j;Booleanexchange;

for(i=1;i<n;i++){exchange=FALSE;

for(j=n-1;j>=i;j--)if(R[j+1].key<R[j].key){R[0]=R[j+1];R[j+1]=R[j];

R[j]=R[0];exchange=TRUE;}

if(!exchange)return;}}希尔排序首先确定比较两个数据的间距,按等间距进行规定的排序比较,若符合排序要求,则保持现状,继续向前比较;若不符合排序要求,则交换两个数据的位置,并沿反向逐一比较,直到若符合排序要求,继续向前比较;直到排序正确为止。然后取间距为原一半,重复1直到间距为1

voidShellSort(SeqListR)//写一算法对顺序表R中的记录R[1..n]作希尔排序

#definen10

typedef

int

KeyType;

typedef

struct{

KeyTypekey;

InfoType

otherinfo;}RecType;

typedef

RecTypeSeqList[n+1];voidShellSort(SeqListR){

intincrement=n;do{increment=increment/3+1;

ShellPass(R,increment);}while(increment>1);}希尔排序//希尔排序

voidShellPass(SeqList

R,intd)//写一算法进行希尔排序中的一趟排序,d为当前增量

#definen10

typedef

int

KeyType;

typedef

struct{KeyType

key;InfoType

otherinfo;}RecType;typedef

RecTypeSeqList[n+1];voidShellPass(

温馨提示

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

评论

0/150

提交评论