文档库 最新最全的文档下载
当前位置:文档库 › 基于MATLAB的数据实时采集与处理的实现_梁湘

基于MATLAB的数据实时采集与处理的实现_梁湘

基于MATLAB的数据实时采集与处理的实现_梁湘
基于MATLAB的数据实时采集与处理的实现_梁湘

0.引言

MATLAB/SIMULINK是现在流行的仿真软件。MATLAB集数学计算结果可视化和编程于一体,能够方便地进行科学计算和大量工程运算的数学软件;SIMULINK是MATLAB的常用组件,它是基于MATLAB的语言环境下实现动态装置建模,仿真和分析的一个集成环境,支持连续、离散及两者混合的线性和非线性装置,也支持具有多种采样速率的多速率装置,被广泛的用于控制系统设计和系统仿真等诸多领域。但是MATLAB不能直接对硬件进行读写操作,从而影响了在控制系统仿真上的应用范围。MATLAB提供了众多外部函数接口,本文从中选择MEX文件接口作为MATLAB对外界进行读写的通道,首先对USBCAN接口卡进行设计,接下来以这个接口卡为通道,实现了MATLAB对于硬件的访问。

1.USB-CAN转接卡的设计

首先对于USBCAN转接卡进行设计,以便于设计出的转接卡能作为通信通道,让MATLAB能够通过USBCAN转换模块采集CAN总线上的数据,然后进行仿真。

在基于CAN总线的控制系统中,作为下层网络的CAN总线与计算机之间的通信以往是通过基于RS232接口、PC机上的ISA总线和PCI总线的通信适配卡来完成的。这些种类的转接卡有传输速率较慢,设计复杂和不便于扩展等缺点。

本课题设计的CAN-USB转接卡的功能是:采集CAN总线上的数据,通过USB总线和上位控制站之间进行数据传输。在通讯方面,一方面要满足CAN的协议标准,实现开放性,互操作性,在高速通信的情况下做到拥有较好的抗干扰性能;另一方面,转接卡兼容USB1.1总线,转接卡可以通过USB连接到PC机。其主要设计参数如下:数据传输速率:波特率在5Kbit/s~1Mbit/s范围内:

USB总线标准:满足USB1.1协议的标准USB设备A/B插座

CAN总线接口:DB9针型插座,符合DeviceNET和CANopen标准CAN协议:支持CAN2.0B协议(兼容CAN2.0A协议)

供电方式:USB总线供电(+5V)或者使用外接电源(+9V~+25V,400mA)

运行环境:WindowsXP

转接卡的方案设计的思想是在已经存在的CAN总线网络中增加一个数据采集节点,用来采集各个节点发来的的数据,再通过USB总线上传到PC机,进行分析过和存储等操作。设计的具体实现是采用单片机通过控制USB控制芯片,与PC机进行通信,从PC机得到采集数据的指令和向PC机上传数据。同时,因为USB总线速度较快,并且是要从CAN网络读取数据分析,所以单片机通过不同的片选信号控制两个CAN控制芯片,分别能够从两路CAN网络上采集数据,和将从PC机得到的数据通过两个CAN控制芯片分别发送出去。所设计的系统结构如下图1所表示:

两路CAN

CAN总线

USB协议具有1.1和2.0两个版本。从MATLAB对数据进行读写出发,并且处于CAN总线所能提供的速率限制,USB协议1.1版本已经能满足我们所需要的性能要求。USB1.1提供两种数据传输速率,低速传输为1.5Mbps,全速传输为12Mbps,并支持所有USB的特性,如热插拔、具有统一的设备标准以及可以连接多个设备等。CAN总线目前有CAN协议2.0A和CAN协议2.0B两个版本。本次设计所选用的单片机和CAN网络控制芯片均可支持CAN协议2.0A和CAN协议2.0B两个版本。

图1USBCAN转接卡的总体设计

本设计选用89CS52作为单片机来对CAN控制芯片和USB控制芯片操作。89CS52是ATMEL公司生产的低电压,高性能的单片机,兼容80C51构架。选择SJA1000做CAN总线控制芯片。这款芯片是一个由飞利浦公司生产的独立的CAN控制器,它在汽车和普通的工业应用上都具有较为先进的特征。它能适合多种应用,特别是在系统优化、诊断和维护方面,并且能和支持80C51构架的单片机兼容。选择PCA82C250作为CAN总线接口芯片,这款芯片专为CAN总线进行差分通信而设计。

根据设计要求,USBCAN转接卡应该直接能与PC机相连接,再与CAN总线进行通信。对比USB协议三层设备:主机(HOST),集线器(HUB)和设备(NODE),PC机作为主机,USBCAN转接卡是作为最下面一个级别:设备(NODE),只需要与其相连而不需要再作为HUB接入其它USB设备。所以需要挑选的是能够在充当设备(NODE)的芯片,这款芯片应该可以与51系列单片机相连通,并且支持USB协议1.1版本。市场上此类控制芯片主要有两种,一种是将单片机(MCU)集成到USB芯片上,代表如EZ-USBFX2;另一种是纯粹的USB接口芯片,如PDIUSBD12。考虑到前文提出的设计指标等因素,本文选择了飞利浦公司的PDIUSBD12芯片。PDIUSBD12是一款性价比很高的USB器件,广泛的采用与许多PC机的外设。

硬件设计完成后,对于固化在单片机ROM中的程序进行设计。单片机ROM中的程序主要采用中断驱动。它将USB总线和CAN总线上的数据请求都当作中断处理,在相应的中断处理程序中再将所采集到的数据转发到另外一个总线。

最后对于转接卡的驱动程序进行设计。驱动程序采用Windows体系下WDM驱动程序模型。在这种模型下,对于USB设备来说,驱动程序可以分为USB底层驱动程序和USB功能驱动程序。USB底层驱动程序在实际运行中对实际硬件进行操作,实现了复杂的底层通信;USB功能驱动程序则一般由设备开发者编写,逻辑位置位于USB底

基于MATLAB的数据实时采集与处理的实现

梁湘

(同济大学机械工程学院中国上海200092)

【摘要】本文的利用USB与CAN两种技术的优点设计了通信转接卡,提高整个网络的通信质量。接下来,采用该转接卡作为MATLAB与SIMULINK环境下实时仿真的通信转接卡,进行MATLAB环境下对CAN总线数据的实时采集、处理与仿真功能,完成MATLAB与SIMULINK下对控制系统的仿真和实时控制,为类似的通信转接卡的研究提供一定的参考。

【关键词】USB-CAN转接卡;半实物平台;MATLAB;SIMULINK

TheRealizationofReal-timeReadingandWritinginMATLAB

LiangXiang

(SchoolofMechanicalEngineering,TongjiUniversity,Shanghai200092)

【Abstract】ThepapertakesadvantageofCAN-busandUSB-bustodesignUSBCANadapter.Theadapterimprovesthequalityofnetwork’scommunication.Following,thepapertakesUSBCANadapterasachannelwithwhichMATLABcancollectdatafromCAN-bus.Inthisway,MATLABcancollect,handleandsimulatedatainreal

time.

层驱动之上,不对实际硬件进行操作,而是通过向底层驱动程序发送包含USR(USBRequestBlock,USB请求块),来实现对USB设备信息的发送与接受。USBCAN转接卡的驱动程序包含有如下功能转接卡驱动程序初始化;

创建和删除转接卡;

处理Windows程序的句柄操作,读与写请求;

对转接卡的访问,实现设备操作;

处理电源管理,卸载硬件操作等。

2.MATLAB外部函数接口简介

虽然MATLAB具有良好的扩展性以及强大的数据分析和处理能力并且拥有一个完整的、功能齐全的编程环境,但是某些情况下,与外部环境的数据和程序进行实时交换是非常重要的。但是,MATLAB只支持串口和很少一部分硬件,不能实现对数据的实时采集,它所处理的数据必须是现成的。因此它不能很好地用于需要在现场对数据进行分析和处理,并马上得到结论的环境。所以对于USBCAN接口卡的设计完成后,需要选择一种MATLAB的外部接口函数,以便于MATLAB通过USBCAN接口卡对于CAN总线上的数据进行读写。

例如在MATLAB对数据进读写的方案设计中,MATLAB需要能第1节对USBCAN转接卡设计的基础上调用驱动程序。但是MATLAB并不能够识别转接卡的驱动程序。所以,整个方案的问题在于如何使得MATLAB与USBCAN转接卡进行通信,通过其实现对硬件端口的读写操作,最终实现在MATLAB与SIMULINK环境中进行实时仿真与控制。并且在Windows环境下用户不能直接访问硬件,只能通过与驱动程序进行通信访硬件,所以必须使得MATLAB与USBCAN转接卡驱动程序进行通信。

首先对MATLAB1外部函数接口进行介绍。MATLAB应用程序接口(API)主要包括3部分:MEX文件(外部程序调用接口)、Mat文件(数据输入输出接口)和MATLAB计算引擎函数库。它们实现的一般功能分别为:

1)在MATLAB环境中调用C/C++语言等语言编写的程序,以提高数据处理效率;

2)向MATLAB环境传送数据或从MATLAB环境接收数据,即实现MATLAB系统与外部环境的数据交换;

3)在MATLAB和其他应用程序间建立客户机与服务器关系,将MATLAB作为一个计算引擎,在其他应用程序中调用从而降低程序设计的工作量。

因为目的是使用MATLAB对USBCAN转接卡进行数据的采集,对控制系统进行实时仿真与控制,所以采用MEX文件较为方便。MEX文件经过编译后,可以作为一个MATLAB的内建函数来调用,并且这个函数可以与驱动程序进行通信,完成对硬件端口信号的读写操作。

MEX文件是MATLAB调用别的语言编写的程序或算法的接口。MEX文件使得MATLAB可以直接调用与C/C++、FORTRAN语言编写的算法和例程。

通过编写符合接口规范的C++语言的程序,然后用MEX文件调用与编译动态链接库,以子函数或者子过程的形式提供给MATLAB,就可以实现其对硬件的读写。如下图所表示:

图2MEX文件的读写流程

3.MEX文件的编写

MEX文件是一种动态链接的子程序,就如同Windows中的DLL文件一样,并且能像MATLAB的内建函数一样,能被MATLAB的解释器根据调用命令自动地装入和执行。MEX的文件使用十分类似于MATLAB的内建函数。在MATLAB中,对于MEX文件是优先执行的。也就是说,如果同时存在文件名分别是MEX、DLL和M的文件,则MATLAB会优先执行MEX文件。MATLAB在调用MEX文件时候,除了运行速度略快一些外,其他方面与M文件差别不大。

对于MATLAB来说,MEX文件的功能很广泛:

用C/C++等程序编写的函数和子程序,能够被编译成MEX文件的形式后,能够被MATLAB中函数直接调用,而不用重新编写相应的M文件。

由于MATLAB的执行循环速度比较慢,因此对于这部分功能,可以编写相应的C/C++程序,然后编译成MEX文件,提高运行速度;

利用MEX文件,还可以调用其他的一些软件,并与其他软件交换数据,如Windows中的用户界面资源,扩大MATLAB的功能;

对于D/A,A/D卡或者其他PC硬件,可以直接使用MEX进行访问,扩展MATLAB的功能。

MEX文件的源文件主要有两个部分组成:

1.计算子例行程序(ComputationalRoutine)。它是链接的外部子程序,包含所有要完成计算功能的源代码,用来完成实际的计算工作。计算程序可以是普通的C/C++程序,按照C/C++程序的语言规则进行编写即可。

这部分代码在这里要完成的工作就是调用USBCAN转接卡的驱动程序,对转接卡进行读写,取得数据后返回给MATLAB。

2.入口子例行程序(GatewayRoutine)。它是计算子例行程序和MATLAB环境之间的接口,用于完成两者间的数据交互。入口子例行程序是MATLAB调用C++程序所必需的部分,计算子例行程序可以由入口子例行程序调用以完成其特定的功能要求。

这个接口程序的名字是mexFunction,常用形式如下:

VoidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[])

其中,nlhs是一个int型的变量,记录MEX输出参数的个数;

plhs是一个mxArray型的指针数组,数组中的每个元素分别指向每个输出参数的起始地址

nrhs是一个int型变量,用于记录MEX文件输入参数的个数;

prhs是一个mxArray型的指针数组,数组中的每个元素分别指向每个输入参数的起始地址

当MATLAB启动一个MEX文件时,传递的参数就是mexFunction中的函数。例如,MATLAB调用一个名为plus的MEX函数,其格式为:[z]=plus[x,y]。此时,首先将函数的输入变量的个数赋予变量nlhs,此处是2,因为有x和y两个变量;然后生成一个prhs矩阵,用来存放输入参数的起始地址,此处prhs(1),prhs(2),分别指向输入变量x、y的起始地址;再将函数的输出变量的个数赋予变量nlhs,此处是1,因为有z一个变量;最后生成一个plhs矩阵,用来存放输入参数的起始地址,此处plhs(1),指向输出变量z的起始地址。一般来说,MEX是按引用调用的,既意味着调用过程并不改变输入参数的值。

本文所编写的MEX文件分为两个部分,一个部分是对USBCAN转接卡进行初始化和读取数据的部分,另一部分是MEX与MATLAB的接口部分。如下图4所表示:

图4MEX文件实现流程(下转第19页

课程体系的改革和创新需要有新的教学模式与方法与之配套,才能体现出它的进步和优势,发挥出作用。

(1)理论教学与实践教学的对接。理论教学内容应符合技能培养的要求,根据由浅入深,由基础到专业的教学原则,采用分层的体系结构,针对学生掌握的每一项专业技能,设置相应的理论和技术构成基础,建立多项技术一体化,动态适应的结构,使学生掌握必要、适用的基础理论和技术理论,才能实现理论教学与相对应的实践教学对接,与技能的对接。深化理解理论对实践的指导意义与创新基础,是满足专业技术应用的需要,也是学生可持续发展的基础。随着现代计算机网络技术的日新月异,时时关注新技术的发展趋向也是必不可少的,因此,每位任课老师,在教学时采用案例式教学,把最新的技术知识融入教学范畴也是特色教学的重要环节。如,计算机网络技术基础,网络安全,Web程序设计等课程都贯彻了基本知识、基本技能理论和与之对应的实践教学的对接。

(2)实现“双证书”教学的有机结合和互动。倡导和推进专业能力与职业资格认证相一致的思想和方针。在课程设置与教学内容确定时注重课程教学和职业资格培训挂钩,以国家或行业岗位技能认证考试来检验学生的知识掌握和技能训练成果,通过职业资格认证培训来推动学历教育的改革,达成二者有机结合、良性互动。如在该专业开展了:华为3Com网络HCNE工程师、思科CCNA工程师、信息产业部网络安全工程师等多项专业资格认证,这些认证考试大纲所规定的内容基本已融入了现行课程体系与教学内容,形成了专业教学与“考证”的有机结合。因此学生的认证积极性高、自我选择与针对性强,2004和2005级该专业获证率已在90%以上。

(3)实现实训教学与工程技术应用的对接。实践教学是高职教育的“灵魂”和特色表现。工科专业的实践教学依赖于“环境”的作用与功效。高等职业教育与普通高等教育的目标不同,主要的差异在于:高等职业教育要求学生的动手能力强,主要培养技工和技能型人才。而目前如何实现高等职业教育的教学目标,如何使学生理论联系实际,则校企联合、建立实训基地是一个很好的途径。实训基地建设抓住了当前职业教育中实践性的一环,是当前职业教育中亟待解决的问题,有利于提升高等职业教育的质量,有利于培养技能型人才,是技能型人才培养的一种新模式。实训基地建设应从高等职业教育中学生实践能力的培养这一视角来探讨高等职业教育中实训基地的建设问题,主要注重实训基地的建设和运作模式,以及实训基地实训作用的发挥等问题。具体来讲,研究内容包括:实训基地的硬件建设,包括经费的保障、校企联合建立实训基地的模式,如何模拟真实的工作环境;实训基地的软件环境,包括实训教师的选取、培养,实训教学的方式等;实训基地如何与课堂教学结合等问题。针对于计算机网络技术专业的培养理念“培养工程师,就要有培养工程师的环境”。在实训基地中建成了华为3Com网络学院培训中心和网络专业综合职业实训中心,它是在原网络专业实验室的基础上扩大功能内涵,增设新项目(网络安全、路由交换配置、网络测试等),添置新仪器设备(华为、锐捷高端网络设备、高级网络测试仪等),使综合性得到进一步完善,形成科研和技术开发环境,使实践教学具有模拟职业环境,体验职业氛围,体验工艺规范,使技能操作训练能高度集中,便于学习掌握,提高实训的复用性和经济性,提高实训功效等诸多特点。

10.结束语

计算机网络技术专业是计算机科学技术当中的一个传统学科,随着网络技术的发展,其所涉及的科学领域也越来越宽,如何体现这个学科的特色,即摆脱传统的教学模式的束缚,是发展这个学科的关键,通过确定其朝硬件方向发展的思路,进行课程体系和教学模式改革与创新,并加强教师队伍建设,去年本专业130多名学生,一次性就业率达到80%以上,达到满意效果。

【参考文献】

[1]教育部.教育部关于批准有关高等学校试办示范性软件职业技术学院的通知.2003,12.

[2]吴岩.高等职业教育发展定位中的若干问题,职业技术教育,2004/19,13-15.[3]谈兴华.高职学制改革的对策和建议,全国高职高专校长联席会议2004第一次专题研讨会交流文稿.

[4]卢洪胜.专业课教师的素质特征与教材建设,中国职业技术教育,2002/11,57-58.

[责任编辑:张新雷]

科(上接第45页)接下来是MEX文件的编译。首先,在编译MEX

文件之前,要对MATLAB中MEX文件编译器的默认设置文件

(mexopts.bat)进行编辑。用户可以在MATLAB命令行中输入:mex–

setup进行编辑,然后按照提示对编译器进行编辑。

MEX文件可以在MATLAB命令窗口中直接编译,方式如下:>>

mexfilename,然后按回车键。如果编译通过,将不会出现任何编译错

误或者警告信息,系统就会生成同名字的DLL文件。在以后的程序中

可以像调用MATLAB的内建函数一样,方便的在MATLAB环境中直

接调用此函数。

MEX文件编译完成后,就可以在MATLAB环境下对于USBCAN

接口卡进行直接调用了,整个系统的通讯流程如下图5所表示:

图5总体方案实现流程

4.结论

传统的应用中,首先要将采集到的数据存储成为文件,MATLAB

才能对和数据进行处理。本文通过MATLAB使用USBCAN转接卡作

为数据采集转接卡,通过MATLAB应用程序接口MEX文件与转接卡

驱动程序通信,完成MATLAB环境下的数据实时采集与处理功能,进

而完成SIMULINK环境下对控制系统的仿真和实时控制,具有一定的

新意,对类似的系统的设计提供了一定的借鉴。

[责任编辑:韩铭]

MATLAB数据及其运算_习题答案

第2章 MATLAB数据及其运算 习题2 一、选择题 1.下列可作为MATLAB合法变量名的是()。D A.合计 B.123 C.@h D.xyz_2a 2.下列数值数据表示中错误的是()。C A.+10 B. C.2e D.2i 3.使用语句t=0:7生成的是()个元素的向量。A A.8 B.7 C.6 D.5 4.执行语句A=[1,2,3;4,5,6]后,A(3)的值是()。B A.1 B.2 C.3 D.4 5.已知a为3×3矩阵,则a(:,end)是指()。D A.所有元素 B.第一行元素 C.第三行元素 D.第三列元素 6.已知a为3×3矩阵,则运行a (1)=[]后()。A A.a变成行向量 B.a变为2行2列 C.a变为3行2列 D.a变为2行3列 7.在命令行窗口输入下列命令后,x的值是()。B >> clear >> x=i*j A.不确定 B.-1 C.1 D.i*j 8.fix(354/100)+mod(354,10)*10的值是()。D A.34 B.354 C.453 D.43 9.下列语句中错误的是()。B A.x==y==3 B.x=y=3 C.x=y==3 D.y=3,x=y 10.find(1:2:20>15)的结果是()。C A.19 20 B.17 19 C.9 10 D.8 9 11.输入字符串时,要用()将字符括起来。C A.[ ] B.{ } C.' ' D." " 12.已知s='显示"hello"',则s的元素个数是()。A A.9 B.11 C.7 D.18

13.eval('sqrt(4)+2')的值是()。B A.sqrt(4)+2 B.4 C.2 D.2, 2 14.有3×4的结构矩阵student,每个结构有name(姓名)、scores(分数)两个成 员,其中scores是以1×5矩阵表示的5门课的成绩,那么要删除第4个学生的第2门课 成绩,应采用的正确命令是()。D A.rmfield(student(1,2).scores(2)) B.rmfield(student(4).scores) C.student(4).scores(2)=0 D.student(1,2).scores(2)=[] 15.有一个2行2列的单元矩阵c,则c(2)是指()。B A.第一行第二列的元素内容 B.第二行第一列的元素内容 C.第一行第二列的元素 D.第二行第一列的元素 二、填空题 1.从键盘直接输入矩阵元素来建立矩阵时,将矩阵的元素用括起来,按矩阵 行的顺序输入各元素,同一行的各元素之间用分隔,不同行的元素之间用 分隔。中括号,逗号或空格,分号 2.设A=[1,2;3,4],B=[5,6;7,8],则A*B= , A.*B= 。 A*B=[19,22;43,50],A.*B=[5,12;21,32] 3.有3×3矩阵,求其第 5个元素的下标的命令是,求其第三行、第三列元 素的序号的命令是。[i,j]=ind2sub([3 3],5),ind=sub2ind([3 3],3,3) 4.下列命令执行后的输出结果是。20 >> ans=5; >> 10; >> ans+10 5.下列命令执行后,new_claim的值是。This is a great example. claim= 'This is a good example.'; new_claim=strrep(claim,'good','great') 三、应用题 1.命令X=[]与clear X有何不同请上机验证结论。 Clear X是将X从工作空间中删除,而X=[]是给X赋空矩阵。空矩阵存在于工作空间 中,只是没有任何元素。 2.在一个MATLAB命令中,6?+?7i和6?+ 7*i有何区别i和I有何区别 3.设A和B是两个同大小的矩阵,试分析A*B和A.*B、A./B和B.\A、A/B和B\A的 区别如果A和B是两个标量数据,结论又如何 4.写出完成下列操作的命令。 (1)将矩阵A第2~5行中第1,3,5列元素赋给矩阵B。 (2)删除矩阵A的第5号元素。

实验一数据处理方法MATLAB实现

实验一数据处理方法的MATLAB实现 一、实验目的 学会在MATLAB环境下对已知的数据进行处理。 二、实验方法 1. 求取数据的最大值或最小值。 2. 求取向量的均值、标准方差和中间值。 3.在MATLAB环境下,对已知的数据分别进行曲线拟合和插值。 三、实验设备 1.586以上微机,16M以上内存,400M硬盘空间,2X CD-ROM 2.MATLAB5.3以上含CONTROL SYSTEM TOOLBOX。 四、实验内容 1.在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 2.在MATLAB环境下,选择合适的曲线拟合和插值方法,编写程序,对已知的数据分别进行曲线拟合和插值。 五、实验步骤 1. 在MATLAB环境下,将已知的数据存到数据文件mydat.mat中。 双击打开Matlab,在命令窗口(command window)中,输入一组数据:实验一数据处理方法的MATLAB实现 一、实验目的 学会在MATLAB环境下对已知的数据进行处理。 二、实验方法 1. 求取数据的最大值或最小值。 2. 求取向量的均值、标准方差和中间值。 3.在MATLAB环境下,对已知的数据分别进行曲线拟合和插值。 三、实验设备 1.586以上微机,16M以上内存,400M硬盘空间,2X CD-ROM 2.MATLAB5.3以上含CONTROL SYSTEM TOOLBOX。 四、实验内容

1.在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 2.在MATLAB环境下,选择合适的曲线拟合和插值方法,编写程序,对已知的数据分别进行曲线拟合和插值。 五、实验步骤 1. 在MATLAB环境下,将已知的数据存到数据文件mydat.mat中。 双击打开Matlab,在命令窗口(command window)中,输入一组数据: x=[1,4,2,81,23,45] x = 1 4 2 81 2 3 45 单击保存按钮,保存在Matlab指定目录(C:\Program Files\MATLAB71)下,文件名为“mydat.mat”。 2. 在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 继续在命令窗口中输入命令: (1)求取最大值“max(a)”; >> max(x) ans = 81 (2)求取最小值“min(a)”; >> min(x) ans = 1 (3)求取均值“mean(a)”; >> mean(x) ans =

MATLAB在化工数据处理中的应用

化工数据处理与实验设计 期中论文 Matlab在化工数据处理中的应用 姓名:陈奕含 学号:2012115134 班级:化学工程与工艺

Matlab在化工数据处理中的应用 一、MATLAB简介 Matlab软件包最初是1967年由Clere Maler用FORTRAN语言设计和编写的。1984年Mathworks公司用C语言完成了Matlab的商业化版本并推向市场。经过20余年的改进,Matlab已发展成为一个具有极高通用性的、带有众多实用工具的运算平台,成为国际上广泛认可的优秀科学计算软件。 Matlab是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国Mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 Matlab和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。Matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 Matlab的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用Matlab来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且Matlab也吸收了像Maple等软件的优点,使Matlab成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JA V A的支持。其特点如下: 1.支持多平台操作系统(Windows、Unix等)。 2.是一种简单易学的编程语言。 3.Matlab程序很容易维护。 4.编程效率很高。由于用户程序可直接调用大量的Matlab函数,因此编程速度快。 5.用途广泛。可用于数值计算和符号计算、数据分析、工程与科学绘图、图形用户界面设计、建模和仿真、控制系统设计、数字图像信号处理以及财务工程等。 6.功能超强。包含600多个常用算法内建函数,有众多面向具体应用的工具箱(如偏微分方程、最优化方法、数理统计、样条函数、神经网络工具箱等)和simulink仿真模块。此外,其他产品延伸了Matlab的能力,包括数据采集和依靠Matlab语言编程产生独立的C/C++代码等等。其算法函数大多由国际知名专家完成,算法稳定可靠、效率高。 7.具有开放式结构,扩展功能强。Matlab的开放式结构使Matlab产品族很

基于MATLAB的EXCEL数据计算与分析

基于MATLAB的EXCEL数据计算与分析 潜刘方 摘要:再怎么样希望先看摘要,阅读本文需要一定的MA TLAB基础知识,不需要excel相关知识。结合本人近期工作上的需要测量计算,想偷懒就选择了利用MATLAB偷懒,于是便有了本文。本文首先利用MA TLAB读取数据,计算,将数据写入excel,然后花了很大的精力来根据实际需要画图,最后将图保存在excel所在的文件夹下。这个m文件可谓花了我不少的时间和精力。最后根据m文件的不足(不能将图形输入到excel文档当中),进一步弥补这不足,就有了exlink(也叫excel link),在网上搜索了相关的知识,发现很多关于exlink 的培训,觉得实在可笑,所以就将exlink的使用写的比较详细,以供读者自行分析体会。关键字:MATLAB excel exlink 接口 一、前沿 MATLAB是一款应用在各个领域的数学软件,最初叫做矩阵实验室,专用于矩阵的运算,后来的版本再各个领域都得到了很好的应用,比如:通信、电力电子、电机控制、运动控制、计算机控制、自动控制,DSP数字信号处理。但是MATLAB对于数据的处理与可视化是很多软件所不能及的。 EXCEL作为办公必备软件,能对简单数据分析计算与作图分析,但是处理复杂数据显得力不从心,比如三维作图就无法利用EXCEL作出;EXCEL本身的函数远远没有MATLAB 多,MATLAB作为数据有其独特的优势,集成了很多数学函数,包括数据拟合差值等。MATLAB 可以从EXCEL中读取数据,经过相关运算之后又可以将数据写入EXCEL,假如需要重复性的对excel可以利用MATLAB编写函数,每次只要运行MATLAB程序就可以完成,大大节省时间和精力。 另外,MATLAB还有与EXCEL的接口,叫做EXLINK,运用这个接口可以在excel中完成MATLAB函数的调用,还能传送数据给MATLAB,从MATLAB当中读取数据,从MATLAB 当中读取图形,使用方便,操作简单。 二、基于MATLAB的数据分析 数据分析操作流程主要分为三步:第一步,从excel中读取数据;第二部:利用MATLAB 大量函数对数据分析处理;第三步:将分析结果写入excel中。在整个过程中,不需要打开excel软件,操作十分方便,每次操作唯一要做就是修改excel所在的目录及文件名。主要函数如下(具体使用方法可在MATLAB命令窗口输入help +函数名查看):Xlsread 从excel中读数据 Xlswrite 向excel中邪数据 num2str 将数字转换为字符串 strncmp 字符串比较 polyfit 数据拟合 polyval 具体数值代入求值 plot 作图

第2章matlab数据及其运算_习题答案

第2章M A T L A B数据 及其运算_习题答案-CAL-FENGHAI.-(YICAI)-Company One1

第2章 MATLAB数据及其运算 习题2 一、选择题 1.下列可作为MATLAB合法变量名的是()。D A.合计 B.123 C.@h D.xyz_2a 2.下列数值数据表示中错误的是()。C A.+10 B. C.2e D.2i 3.使用语句t=0:7生成的是()个元素的向量。A A.8 B.7 C.6 D.5 4.执行语句A=[1,2,3;4,5,6]后,A(3)的值是()。B A.1 B.2 C.3 D.4 5.已知a为3×3矩阵,则a(:,end)是指()。D A.所有元素 B.第一行元素 C.第三行元素 D.第三列元素 6.已知a为3×3矩阵,则运行a (1)=[]后()。A A.a变成行向量 B.a变为2行2列 C.a变为3行2列 D.a变为2行3列 7.在命令行窗口输入下列命令后,x的值是()。B >> clear >> x=i*j A.不确定 B.-1 C.1 D.i*j 8.fix(354/100)+mod(354,10)*10的值是()。D A.34 B.354 C.453 D.43 9.下列语句中错误的是()。B A.x==y==3 B.x=y=3 C.x=y==3 D.y=3,x=y 10.find(1:2:20>15)的结果是()。C A.19 20 B.17 19 C.9 10 D.8 9 11.输入字符串时,要用()将字符括起来。C A.[ ] B.{ } C.' ' D." " 12.已知s='显示"hello"',则s的元素个数是()。A A.9 B.11 C.7 D.18

基于MATLAB的数据实时采集与处理的实现_梁湘

0.引言 MATLAB/SIMULINK是现在流行的仿真软件。MATLAB集数学计算结果可视化和编程于一体,能够方便地进行科学计算和大量工程运算的数学软件;SIMULINK是MATLAB的常用组件,它是基于MATLAB的语言环境下实现动态装置建模,仿真和分析的一个集成环境,支持连续、离散及两者混合的线性和非线性装置,也支持具有多种采样速率的多速率装置,被广泛的用于控制系统设计和系统仿真等诸多领域。但是MATLAB不能直接对硬件进行读写操作,从而影响了在控制系统仿真上的应用范围。MATLAB提供了众多外部函数接口,本文从中选择MEX文件接口作为MATLAB对外界进行读写的通道,首先对USBCAN接口卡进行设计,接下来以这个接口卡为通道,实现了MATLAB对于硬件的访问。 1.USB-CAN转接卡的设计 首先对于USBCAN转接卡进行设计,以便于设计出的转接卡能作为通信通道,让MATLAB能够通过USBCAN转换模块采集CAN总线上的数据,然后进行仿真。 在基于CAN总线的控制系统中,作为下层网络的CAN总线与计算机之间的通信以往是通过基于RS232接口、PC机上的ISA总线和PCI总线的通信适配卡来完成的。这些种类的转接卡有传输速率较慢,设计复杂和不便于扩展等缺点。 本课题设计的CAN-USB转接卡的功能是:采集CAN总线上的数据,通过USB总线和上位控制站之间进行数据传输。在通讯方面,一方面要满足CAN的协议标准,实现开放性,互操作性,在高速通信的情况下做到拥有较好的抗干扰性能;另一方面,转接卡兼容USB1.1总线,转接卡可以通过USB连接到PC机。其主要设计参数如下:数据传输速率:波特率在5Kbit/s~1Mbit/s范围内: USB总线标准:满足USB1.1协议的标准USB设备A/B插座 CAN总线接口:DB9针型插座,符合DeviceNET和CANopen标准CAN协议:支持CAN2.0B协议(兼容CAN2.0A协议) 供电方式:USB总线供电(+5V)或者使用外接电源(+9V~+25V,400mA) 运行环境:WindowsXP 转接卡的方案设计的思想是在已经存在的CAN总线网络中增加一个数据采集节点,用来采集各个节点发来的的数据,再通过USB总线上传到PC机,进行分析过和存储等操作。设计的具体实现是采用单片机通过控制USB控制芯片,与PC机进行通信,从PC机得到采集数据的指令和向PC机上传数据。同时,因为USB总线速度较快,并且是要从CAN网络读取数据分析,所以单片机通过不同的片选信号控制两个CAN控制芯片,分别能够从两路CAN网络上采集数据,和将从PC机得到的数据通过两个CAN控制芯片分别发送出去。所设计的系统结构如下图1所表示: 两路CAN CAN总线 USB协议具有1.1和2.0两个版本。从MATLAB对数据进行读写出发,并且处于CAN总线所能提供的速率限制,USB协议1.1版本已经能满足我们所需要的性能要求。USB1.1提供两种数据传输速率,低速传输为1.5Mbps,全速传输为12Mbps,并支持所有USB的特性,如热插拔、具有统一的设备标准以及可以连接多个设备等。CAN总线目前有CAN协议2.0A和CAN协议2.0B两个版本。本次设计所选用的单片机和CAN网络控制芯片均可支持CAN协议2.0A和CAN协议2.0B两个版本。 图1USBCAN转接卡的总体设计 本设计选用89CS52作为单片机来对CAN控制芯片和USB控制芯片操作。89CS52是ATMEL公司生产的低电压,高性能的单片机,兼容80C51构架。选择SJA1000做CAN总线控制芯片。这款芯片是一个由飞利浦公司生产的独立的CAN控制器,它在汽车和普通的工业应用上都具有较为先进的特征。它能适合多种应用,特别是在系统优化、诊断和维护方面,并且能和支持80C51构架的单片机兼容。选择PCA82C250作为CAN总线接口芯片,这款芯片专为CAN总线进行差分通信而设计。 根据设计要求,USBCAN转接卡应该直接能与PC机相连接,再与CAN总线进行通信。对比USB协议三层设备:主机(HOST),集线器(HUB)和设备(NODE),PC机作为主机,USBCAN转接卡是作为最下面一个级别:设备(NODE),只需要与其相连而不需要再作为HUB接入其它USB设备。所以需要挑选的是能够在充当设备(NODE)的芯片,这款芯片应该可以与51系列单片机相连通,并且支持USB协议1.1版本。市场上此类控制芯片主要有两种,一种是将单片机(MCU)集成到USB芯片上,代表如EZ-USBFX2;另一种是纯粹的USB接口芯片,如PDIUSBD12。考虑到前文提出的设计指标等因素,本文选择了飞利浦公司的PDIUSBD12芯片。PDIUSBD12是一款性价比很高的USB器件,广泛的采用与许多PC机的外设。 硬件设计完成后,对于固化在单片机ROM中的程序进行设计。单片机ROM中的程序主要采用中断驱动。它将USB总线和CAN总线上的数据请求都当作中断处理,在相应的中断处理程序中再将所采集到的数据转发到另外一个总线。 最后对于转接卡的驱动程序进行设计。驱动程序采用Windows体系下WDM驱动程序模型。在这种模型下,对于USB设备来说,驱动程序可以分为USB底层驱动程序和USB功能驱动程序。USB底层驱动程序在实际运行中对实际硬件进行操作,实现了复杂的底层通信;USB功能驱动程序则一般由设备开发者编写,逻辑位置位于USB底 基于MATLAB的数据实时采集与处理的实现 梁湘 (同济大学机械工程学院中国上海200092) 【摘要】本文的利用USB与CAN两种技术的优点设计了通信转接卡,提高整个网络的通信质量。接下来,采用该转接卡作为MATLAB与SIMULINK环境下实时仿真的通信转接卡,进行MATLAB环境下对CAN总线数据的实时采集、处理与仿真功能,完成MATLAB与SIMULINK下对控制系统的仿真和实时控制,为类似的通信转接卡的研究提供一定的参考。 【关键词】USB-CAN转接卡;半实物平台;MATLAB;SIMULINK TheRealizationofReal-timeReadingandWritinginMATLAB LiangXiang (SchoolofMechanicalEngineering,TongjiUniversity,Shanghai200092) 【Abstract】ThepapertakesadvantageofCAN-busandUSB-bustodesignUSBCANadapter.Theadapterimprovesthequalityofnetwork’scommunication.Following,thepapertakesUSBCANadapterasachannelwithwhichMATLABcancollectdatafromCAN-bus.Inthisway,MATLABcancollect,handleandsimulatedatainreal time.

第2章 MATLAB数据及其运算

MATLAB应用 第2章MATLAB数据及其运算 MATLAB数据的特点 2.1 MATLAB数据的特点 ●矩阵 ●是MATLAB最基本、最重要的数据对象,MATLAB的大部分运算或命令 都是在矩阵运算的意义下执行的,而且这种运算定义在复数域上。向量和单个数据都可以作为矩阵的特例来处理。 ●数值数据 ●双精度型、单精度数、带符号整数和无符号整数。 ●字符数据 ●结构体(Structure)和单元(Cell)数据类型。 ●稀疏矩阵(Sparse) ●逻辑型数据 ●在MATLAB中,以数值1(非零)表示“真”,以数值0表示“假”。 2.2 变量及其操作 ●变量和赋值 ●变量命名的规则 ●变量名的第一个字符必须是英文字母,最多可以包含63个字符。 ●变量名中不能有空格、标点,但可以有下划线如my_var1。 ●变量名、函数名对大小写敏感,如my_data和My_data就不是一个变量。 ●给变量起名时不要和这些保留字冲突。 ●变量不需要事先说明,用赋值语句就定义了变量。变量的类型由赋值语句等号右边的数字 形式决定,免去了高级语言中那种冗长的说明语句。编程过程中,尽量不要与系统变量名冲突,如果你赋值给系统变量,将把变量中的原值冲掉,对计算不利。只有在重新启动后才能恢复原保留值。 2.2 变量及其操作(续) ●赋值语句 ●(1) 变量=表达式 ●(2) 表达式 ●其中表达式是用运算符将有关运算量连接起来的式子,其结果是 一个矩阵。

例2.1 计算表达式的值,并将结果赋给变量x,然后显示计算结果。 在MATLAB命令窗口输入命令: 常用MATLAB预定义变量 2.2 变量及其操作(续) ●数据的输出格式 ●MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。 ●在一般情况下,MATLAB内部每一个数据元素都是用双精度数来表示和存储的。 ●MATLAB默认的数据显示格式为短格式(short):当结果为整数,就作为整数显示;当结果是实数,以小数点后四位的长度显示。若结果的有效数字超出一定范围,以科学计数法显示(如 3.2000e-006表示)。 2.2 变量及其操作(续) ●数据输出时用户可以用format命令设置或改变数据输出 格式。 ●format命令的格式为: format 格式符 其中格式符决定数据的输出格式 控制数据输出的格式符及含义 ●上机练习: ●验证各数据输出格式的输出结果。

MATLAB 主成分数据处理

第11章 主成分 主成分分析(principal component Analysis )又称主分量分析,是由皮尔逊 (pearson )于1901年首先引入,后来由霍特林(hotelling )于1933年进行了发展。主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的多元统计方法,这些主成分能够反映原始变量的大部分信息,通常表示为原始变量的线性组合,为使得这些主成分所包含的信息互不重叠,要求各主成分之间互不相关。主成分分析在很多领域有着广泛的应用,一般来说,当研究的问题涉及很多变量,并且变量间相关性明显,即包含的信息有所重叠时,可以考虑用主成分分析的方法,这样容易抓住事物的主要矛盾,使得问题得到简化。 本章主要内容包括:主成分分析的理论简介,主成分分析的MATLAB 实现,主成分分析的主要具体案例。 11.1主成分分析简介 11.1.1主成分分析的几何意义 假设从二元总体 12(,)'x x x =中抽取容量为n 的样本,绘出样本观测值的散点图,如图11-1所 示。从图上可以看出,散点大致分布在一个椭圆内1x 与2x 呈现出明显的线性相关。这n 个样品 在 1x 轴方向和2x 方向具有相似的离散度,离散度可以用1x 和2x 包含了近视相等的信息量,丢掉其中任意一个变量,都会损失比较多的信息。图11-1中坐标按逆时针旋转一个角度θ,使得 1x 轴旋转到椭圆的长轴方向1y ,2x 轴旋转到椭圆的短轴2y ,则有 112212cos sin sin cos y x x y x x θθθθ =+?? =-+? (11.1) 此时可以看到,n 个点在新坐标系下的坐标1y 和2y 几乎不相关,并且1y 的方差要比2y 的方 差大得多,也就是说1 y 包含了原始数据中大部分的信息,此时丢掉变量 2y ,信息的损失是比较 小的。这里称 1y 为第一主成分2y 为第二主成分。 主成分分析的过程其实就是坐标系旋转的过程,新坐标系的各个坐标系的轴的方向是原始数据变差最大的方向,各主成分表达式就是新旧坐标转换关系式。 11.1.2 总体的主成分 1从总体协方差矩阵出发求解主成分 设 ' (,,,) p x x x x = 为一个p 维总体,假定 x 期望和协方差矩阵均存在并已知,记 ()E x μ =,var() x =∑ ,考虑如下线性变换

相关文档