首页 > 范文大全 > 正文

矩阵描述的位置控制方法及存储效率

开篇:润墨网以专业的文秘视角,为您筛选了一篇矩阵描述的位置控制方法及存储效率范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

1位置控制流程

综合上述过程设计控制流程为①用户界面根据设置的分辨率以及工作点信息构造位置矩阵犕;②调用位置控制程序将犕作为入口参数传入;③控制程序从元素犪00开始依次检查犕中每个元素的值,若发现元素犪犻犼的值为1,则控制可移动部件运动到坐标(犼,犻)处,然后调用参数测量程序;若犪犻犼的值为0,则不进行任何操作;④若犻,犼的值未同时达到最大值,则检查下一个矩阵元素并重复第三步;若犻,犼均达到最大值表明犕中全部元素均检查完毕,整个测量过程结束.

2矩阵描述下的控制方法实现

位置控制流程使用C++语言实现.首先用程序描述位置矩阵,在此基础上编写定位程序.C++中二维数组是天然的矩阵,可定义一个bool型的二维数组来保存位置矩阵犕的元素值.为了保证使用时的安全性以及在程序内传递时的方便性,将该二维数组封装在一个类中,称之为位置矩阵类.类中保存矩阵元素值的二维数组以及记录矩阵行列数(即测量分辨率)的RowCount、ColumnCount变量均作为私有属性而存在.对此重要信息访问只能通过类的公有函数来进行,在函数中可对访问是否非法作出判断,以避免出现访问数组越界或者访问的元素下标超出矩阵范围等情况的发生[8].定义一个函数实现被控部件的定位过程.该函数用来建立坐标系并且实现定位.函数原型如下:intMoveTo(double狓,double狔);函数入口参数是目的地坐标值,其功能是使可移动部件移动到入口参数指定的坐标处.函数执行时首先分别计算犡轴、犢轴的单位长度(即工作点阵的列间距、行间距),然后用该单位长度分别与入口参数的狓值、狔值相乘,即是目的地的实际位置.将该位置的数值转换成脉冲数后作为入口参数分别调用犡轴、犢轴所对应的位移台的API函数,即可使可移动部件运动到指定位置.其中两轴的单位长度计算如下:设测量分辨率为犪×犫,矩形工作区域长宽分别为犃和犅,则犡轴单位长度犡_UnitLenth=犃/(犪+1),犢轴单位长度犢_UnitLenth=犅/(犫+1).由于测量过程对部件的移动轨迹不敏感,因此犡轴和犢轴上的运动采用顺次移动或两轴联动的方式均可.当本次运动结束后MoveTo()函数才会返回,同时给出一个int型返回值,以告知上层程序本次运动的结果和状态,包括是否正常抵达目的位置、是否到达限位等等.在上述基础上可设计测量控制函数MeasurementController()来调用上述MoveTo()函数,以实现对整个测量过程的控制.具体流程如下:将数据位置矩阵犕作为入口参数传递给测量控制函数MeasurementController(),在这个函数内部用两个嵌套的for循环遍历犕中的每一个元素,在嵌套for循环的最内层使用if语句判断该元素的值,若犪犻犼为true则调用MoveTo(犼,犻)函数,此时测量探头便会移动到相应位置,就位后调用数据测量程序测量此处数据,当测量程序返回后又继续检查矩阵的下一个元素的值,以此类推;若犪犻犼为false则不进行任何操作直接检查矩阵的下一个元素,直到检查完全部元素后测量控制函数即可返回.

3位置矩阵存储效率分析

使用bool型二维数组来保存位置矩阵时,由于bool型变量占用一个字节的存储空间,当测量分辨率为犪×犫时,无论有多少工作点,存储一个位置矩阵均耗费犪犫字节.若在1024×1024的分辨率下仅指定了少数几个工作点,存储位置矩阵同样耗费1MB的内存.若位置矩阵是稀疏矩阵时会造成内存浪费,为节省存储空间可对位置矩阵进行压缩存储.由于位置矩阵元素是布尔型变量,因此压缩存储位置矩阵的基本思想是当稀疏因子δ(矩阵中非零元素个数与所有元素个数的比值)较小时,只保存非零元素(即值为1的元素)的下标值[8],则每个非零元可用一个二元组表示.将所有表示非零元素的二元组组织成一个线性表(二元组表),即可将位置矩阵压缩存储在这个线性表中[9].每个二元组包含两个整型变量,占用4个字节,因此采用压缩零元的方法存储矩阵耗费4δ犪犫字节.同样在1024×1024的分辨率下测量10个工作点时,存储位置矩阵只需要40个字节即可.由于阶数一定时压缩零元存储位置矩阵所占空间大小与矩阵稀疏因子有关,若位置矩阵的稀疏因子非常大,甚至达到100%时,采用上述压缩存储的方式将占用内存4犪犫字节,这比直接使用二维数组存储测量更耗费内存.因此在稀疏因子大于50%时采用“反向压缩”法压缩非零元.此时位置矩阵中值为1的元素个数多于值为0的元素个数,改为保存值为0的元素的下标.这样稀疏因子越大,0元素的个数越少,压缩存储位置矩阵所耗内存也越少.引入反向压缩法后稀疏因子的大小与占用内存大小之间的关系如图2(a)所示.由图2(a)可知采用压缩法存储位置矩阵,稀疏因子等于50%时占用内存最多,达到2犪犫字节.如图2(b)实线所示,采用二维数组直接保存位置矩阵(不压缩时)其占用内存的大小与稀疏因子无关,恒为犪犫字节.与虚线部分相比较可知,即便采用了“反向压缩”的办法,当稀疏因子在25%~75%之间时,压缩存储法所占用的内存仍然比二维数组法占用内存多.因此可采用“分段不同”的方法来存储位置矩阵.当稀疏因子小于25%时采用压缩零元的方式存储矩阵;稀疏因子介于25%~75%之间时使用二维数组直接保存矩阵值;当稀疏因子大于75%时采用压缩非零元的“反向压缩法”存储矩阵.程序实现需要使用malloc()函数或realloc()函数进行动态内存分配[10].在绝大多数的测量实例中,要么将待测件上所有工作点全部测量,要么在局部选定少量工作点进行测量.也就是说,实际情况中大部分情况下位置矩阵的稀疏因子都是大于75%或小于25%的.因此使用“分段不同:的方法来存储位置矩阵在大多数情况下都可以对位置矩阵进行有效地压缩.本文来自于《西安工业大学学报》杂志。西安工业大学学报杂志简介详见

4结论

1)采用位置矩阵描述被控元件的位置,实质上记录了每一个位置点的不同属性.矩阵元素下标与位置点的物理坐标对应,而元素值标识该点处的工作状态.引入这一模型可简化控制流程的设计.2)针对位置矩阵元素“非零即一”的特点设计相应的压缩存储方法.计算结果表明这种压缩方法只在稀疏因子小于25%或大于75%时有效.因此采用“分段不同”的方法保存位置矩阵,在稀疏因子介于25%~75%时不进行压缩,直接使用二维数组存储.3)位置矩阵压缩存储后可将这种位置控制方法应用到大分辨率的情形下.可将测量分辨率提高到到几百乘以几百,然后将不同工作点处测量结果用不同灰度或颜色在屏幕显示,即可得到一副与被测元件上各处参数分布状况呈相似形的图像,相当于给被测件上的参数分布“拍照”以便更直观地了解被测元件不同点处的参数分布情况.

作者:张鑫 容晓峰 单位:西安工业大学