[计算机软件及应用]matlab5_程序设计

上传人:tia****nde 文档编号:70981099 上传时间:2019-01-19 格式:PPT 页数:47 大小:1.24MB
返回 下载 相关 举报
[计算机软件及应用]matlab5_程序设计_第1页
第1页 / 共47页
[计算机软件及应用]matlab5_程序设计_第2页
第2页 / 共47页
[计算机软件及应用]matlab5_程序设计_第3页
第3页 / 共47页
[计算机软件及应用]matlab5_程序设计_第4页
第4页 / 共47页
[计算机软件及应用]matlab5_程序设计_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《[计算机软件及应用]matlab5_程序设计》由会员分享,可在线阅读,更多相关《[计算机软件及应用]matlab5_程序设计(47页珍藏版)》请在金锄头文库上搜索。

1、2019/1/19,1,第五讲 Matlab程序设计(2),通信与信息工程学院 20122013学年冬季学期,2019/1/19,2,MATLAB作为一种高级语言,它不仅能以一种人机交互式的命令行的方式工作,还可以像BASIC、FORTRAN、C等其他高级计算机语言一样进行控制流的程序设计,即编制一种以 . m为扩展名的MATLAB程序(简称M文件)。,2019/1/19,3,Matlab语言的开放性: Matlab适应各学科、专业研究的需要,提供了各种专业的工具箱。 Matlab为实现与外部应用程序的“无缝”结合,提供了专门的应用程序接口API。,七、应用程序接口API,2019/1/19,

2、4,Matlab外部接口主要包括: MEX文件,外部程序调用接口; MAT文件,应用程序,数据输入输出接口; Matlab计算引擎函数库; Matlab与其它开发平台的接口,Visual C+、Visual Basic、Delphi、Powerpoint等等。,2019/1/19,5,MEX文件可应用于以下场合: 已经存在的较大规模的C或Fortran程序可以比较容易的在matlab中加以调用,而无需重写成M文件。 在matlab中运行不很有效的计算瓶颈(一般出现在不可避免的循环时),可以用C或Fortran重新编写后构成MEX文件解决。 直接面向硬件编写的C或Fortran程序可以通过MEX

3、被matlab调用。,1、MEX文件,2019/1/19,6,MEX文件是一种可在matlab中调用的C或Fortran语言的衍生程序, MEX文件的源码文件是由C或Fortran语言编写的。 MEX文件经matlab编译器处理而生成二进制文件,可以被matlab解释器自动装载并执行的动态链接程序。这种文件在windows操作系统中使用后缀*.DLL。 MEX文件使用极为方便,其调用方式与matlab内建函数完全相同,在命令窗口键入MEX 文件名。 MEX文件的执行优先级高于M文件。,MEX文件,2019/1/19,7,MEX文件的编译,系统配置完成后,就可以使用命令对文件进行编译了。 MEX

4、 filenames 同时Matlab系统为mex提供了参数,通过该命令参数可以让用户使用不同的选项文件对源文件进行编译,命令格式如下: Mex options filenames 使用help mex查看。,2019/1/19,8,help mex MEX Compile MEX-function. MEX option1 . optionN sourcefile1 . sourcefileN objectfile1 . objectfileN libraryfile1 . libraryfileN Description: MEX compiles and links source fil

5、es into a shared library called a MEX-file, executable from within MATLAB. The resulting file has a platform-dependent extension, as shown in the table below: solaris - .mexsol hpux - .mexhpux glnx86 - .mexglx glnxi64 - .mexi64 Mac OS X - .mexmac Windows - .dll,2019/1/19,9,2、C MEX文件源程序的构成,一般形式的C源码程序

6、不能直接被编译成在matlab中可以调用的MEX文件,只有按约定格式编写的C源码文件才能转化为有效的MEX文件。 C语言MEX文件必须以#include “mex.h”为起首。 C语言MEX文件一般有如下两个相对独立的子程序组成:“计算子程序”用于完成所需的计算;“接口子程序”是计算子程序和matlab空间的接口,用于两个不同内存空间的通信。 “计算子程序”和“接口子程序”相对独立,它们可以分成两个程序,也可以共写在同一个程序中。,2019/1/19,10,列出具有实现两个双精度实数标量加法的C+ MEX源码程序;对C+ MEX源码程序进行编译链接;在MATLAB中调用生成的DLL文件。 “计

7、算子程序” #include “mex.h“ void myplus(double y,double x,double z) y0=x0+z0; ,2019/1/19,11,“接口子程序” void mexFunction(int nlhs,mxArray *plhs, int nrhs,const mxArray *prhs) double *x,*y,*z; int mrows0,ncols0; int mrows1,ncols1; ,2019/1/19,12,mex exm.cpp a=0.111;b=0.222; c=exm(a,b) c = 0.3330,2019/1/19,13,3

8、、matlab引擎技术,Matlab引擎库函数可使用户在自编的应用程序中方便地实现对matlab的调用。 用户自编的界面运行在前台,而matlab作为计算引擎运行在后台。 引擎函数本身用C或Fortran编写。 Matlab在其它语言编制的程序中被当作数学库程序调用,充分利用matlab指令简单、计算可靠的优点,大大节省用户的开发时间。,2019/1/19,14,用C语言编写调用MATLAB引擎计算三次多项式根的源程序。 #include “engine.h“ int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR l

9、pszCmdLine, int nCmdShow) Engine *ep; mxArray *P=NULL,*r=NULL; char buffer301; double poly4=1,0,-2,5; if (!(ep=engOpen(NULL) fprintf(stderr,“nCant start MATLAB enginen“); return EXIT_FAILURE; ,2019/1/19,15,mex -f D:MATLAB6p5binwin32mexoptsmsvc60engmatopts.bat exm.c 编译exm.c生成可执行文件exm.exe。,2019/1/19,1

10、6,4、Matlab中ActiveX技术,ActiveX技术是各种面向对象技术的集合。借助ActiveX技术,开发商和终端用户就能把来自不同商家的ActiveX组建无缝地集成在自己的应用程序中,从而完成特定的目的。避免低水平的重复开发。 Matlab支持两种ActiveX技术: ActiveX控件封装集成和ActiveX自动化。 ActiveX控件是指那些可视、可编程的集成于ActiveX容器的应用组件。最常见有Internet Explorer和Web Browser Control。,2019/1/19,17,ActiveX自动化使matlab能施控和受控于其它组件。当matlab受控于其

11、它组件时,表现为自动化服务器。当matlab控制其它组件时,表现为自动化客户。 matlab自动化服务器的功能包括:在matlab空间中执行命令;与matlab空间直接交换数据。 matlab自动化客户的功能仅是matlab ActiveX控件封装集成功能的子集。,2019/1/19,18,2019/1/19,19,2019/1/19,20,2019/1/19,21,2019/1/19,22,八、M文件调试,编写M文件时,错误在所难免。错误一般有两种:语法错误和运行错误。 语法错误是指变量名、函数名等的误写,标点符号的缺漏等。对于这类错误matlab能在运行时立即发现,终止执行,并给出相应的错

12、误原因以及所在行号。 运行错误是算法本身引起的,相对语法错误而言运行错误较难处理。,2019/1/19,23,1、运行错误来源于算法模型与期望目标是否一致,程序模型是否与算法一致,涉及用户对期望目标原理的理解、对算法的理解,还涉及用户对matlab指令的理解,对程序流的理解,对matlab工作机理的理解。 2、运行错误的表现形态较多,程序正常运行,但结果错误;程序不能正常运行而中断等。 3、运行错误是动态错误。尤其是M函数文件,它一旦运行停止,其中间变量将被删除一空,错误查找很难着手。,运行错误难处理的原因在于:,2019/1/19,24,1、直接调试,将重点怀疑语句行、指令行后的分号删除或改

13、为逗号,使计算机结果显示于屏幕。 在适当的位置,添加显示某些关键变量值的语句。 利用echo命令,使运行时在屏幕上逐行显示文件内容。 在程序的适当位置增添keyboard指令。当运行至keyboard指令时将暂停执行文件,并命令窗口出现K提示符。在K提示符后键入return命令,结束查看,原文件继续执行。,2019/1/19,25,2、调试器的使用,Matlab不仅向用户提供了专门的指令调试工具,而且还提供了使用更为简便的图形调试器。 它与M文件编辑器集成为一体。,2019/1/19,26,图形式调试器,2019/1/19,27,3、程序性能优化,Matlab主要的缺点是运行速度慢。 Matl

14、ab6.5开始启用JIT(just in time)和加速器(accelerator)。 程序优化包括两个步骤:找出耗时最多的程序瓶颈;用更好的程序取代瓶颈程序。,2019/1/19,28,提高matlab运行速度的有效措施,循环向量化。尽量减少使用for(while),代之以向量化的数组运算。如: 尽可能采用matlab提供的函数指令。,k=0; for t=0:pi/20:2*pi; k=k+1; y(k)=cos(t); end,t=0:pi/20:2*pi; y=cos(t);,2019/1/19,29,循环内数组的预配置。尽量避免数组在循环中的不断动态配置。 采用MEX文件执行循环。

15、在循环不可避免又特别费时的情况下,建议用户把该循环采用非解释执行的MEX文件表达。 尽量采用M函数文件替代M命令文件。每次运行命令文件都必须把程序装入内存,然后逐句解释执行,十分费时。函数文件一旦被运行就驻留在内存中,因此较省时。 尽量使用save和load命令实施数据的保存和获取。当数据交换既能采用save和load命令,又能采用I/O函数实现,应尽可能使用save和load命令。,提高matlab运行速度的有效措施,2019/1/19,30,九、图形用户界面制作(GUI),用户界面(graphical user interface)指人与计算机之间交互作用的工具或方法。 图形用户界面是由窗

16、口、光标、按键、菜单、文字说明等对象构成的一个用户界面。用户通过一定的方法选择激活这些图形对象,使计算机实现特定功能。 Matlab设计的演示程序demo是使用图形界面的最好范例。,2019/1/19,31,1、GUI设计原则,简单性simplicity 一致性consistency 习常性familiarity,2019/1/19,32,2、GUI设计步骤,明确设计任务,分析主要功能, 绘制书面草图。 上机制作静态界面。 编写程序。,2019/1/19,33,3、M文件制作图形用户界面,2019/1/19,34,str=fontname隶书 归一化二阶系统的阶跃响应曲线; text(0.12,0.93,str,fontsize,13); h_fig=get(H,parent); set(h_fig,unit,normalized,po

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号