版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五讲 Matlab程序设计(2)通信与信息工程学院20122013学年冬季学期第1页,共47页。8/4/20221 MATLAB作为一种高级语言,它不仅能以一种人机交互式的命令行的方式工作,还可以像BASIC、FORTRAN、C等其他高级计算机语言一样进行控制流的程序设计,即编制一种以 . m为扩展名的MATLAB程序(简称M文件)。 第2页,共47页。8/4/20222Matlab语言的开放性:Matlab适应各学科、专业研究的需要,提供了各种专业的工具箱。Matlab为实现与外部应用程序的“无缝”结合,提供了专门的应用程序接口API。七、应用程序接口API 第3页,共47页。8/4/20
2、223Matlab外部接口主要包括:MEX文件,外部程序调用接口;MAT文件,应用程序,数据输入输出接口;Matlab计算引擎函数库;Matlab与其它开发平台的接口,Visual C+、Visual Basic、Delphi、Powerpoint等等。第4页,共47页。8/4/20224MEX文件可应用于以下场合:已经存在的较大规模的C或Fortran程序可以比较容易的在matlab中加以调用,而无需重写成M文件。在matlab中运行不很有效的计算瓶颈(一般出现在不可避免的循环时),可以用C或Fortran重新编写后构成MEX文件解决。直接面向硬件编写的C或Fortran程序可以通过MEX被
3、matlab调用。1、MEX文件第5页,共47页。8/4/20225MEX文件是一种可在matlab中调用的C或Fortran语言的衍生程序, MEX文件的源码文件是由C或Fortran语言编写的。MEX文件经matlab编译器处理而生成二进制文件,可以被matlab解释器自动装载并执行的动态链接程序。这种文件在windows操作系统中使用后缀*.DLL。MEX文件使用极为方便,其调用方式与matlab内建函数完全相同,在命令窗口键入MEX 文件名。MEX文件的执行优先级高于M文件。MEX文件第6页,共47页。8/4/20226MEX文件的编译系统配置完成后,就可以使用命令对文件进行编译了。
4、MEX filenames同时Matlab系统为mex提供了参数,通过该命令参数可以让用户使用不同的选项文件对源文件进行编译,命令格式如下: Mex options filenames使用help mex查看。第7页,共47页。8/4/20227help mex MEX Compile MEX-function. MEX option1 . optionN sourcefile1 . sourcefileN objectfile1 . objectfileN libraryfile1 . libraryfileN Description: MEX compiles and links sour
5、ce files 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第8页,共47页。8/4/202282、C MEX文件源程序的构成
6、一般形式的C源码程序不能直接被编译成在matlab中可以调用的MEX文件,只有按约定格式编写的C源码文件才能转化为有效的MEX文件。C语言MEX文件必须以#include “mex.h”为起首。C语言MEX文件一般有如下两个相对独立的子程序组成:“计算子程序”用于完成所需的计算;“接口子程序”是计算子程序和matlab空间的接口,用于两个不同内存空间的通信。“计算子程序”和“接口子程序”相对独立,它们可以分成两个程序,也可以共写在同一个程序中。 第9页,共47页。8/4/20229列出具有实现两个双精度实数标量加法的C+ MEX源码程序;对C+ MEX源码程序进行编译链接;在MATLAB中调用
7、生成的DLL文件。 “计算子程序”#include mex.hvoid myplus(double y,double x,double z)y0=x0+z0;第10页,共47页。8/4/202210“接口子程序”void mexFunction(int nlhs,mxArray *plhs, int nrhs,const mxArray *prhs)double *x,*y,*z;int mrows0,ncols0;int mrows1,ncols1; 第11页,共47页。8/4/202211mex exm.cpp a=0.111;b=0.222;c=exm(a,b) c = 0.3330 第
8、12页,共47页。8/4/2022123、matlab引擎技术Matlab引擎库函数可使用户在自编的应用程序中方便地实现对matlab的调用。用户自编的界面运行在前台,而matlab作为计算引擎运行在后台。引擎函数本身用C或Fortran编写。Matlab在其它语言编制的程序中被当作数学库程序调用,充分利用matlab指令简单、计算可靠的优点,大大节省用户的开发时间。第13页,共47页。8/4/202213 用C语言编写调用MATLAB引擎计算三次多项式根的源程序。 #include engine.hint PASCAL WinMain (HANDLE hInstance, HANDLE hP
9、revInstance, LPSTR lpszCmdLine, 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;第14页,共47页。8/4/202214mex -f D:MATLAB6p5binwin32mexoptsmsvc60engmatopts.bat exm.c 编译exm.c生成可执行文件exm
10、.exe。第15页,共47页。8/4/2022154、Matlab中ActiveX技术ActiveX技术是各种面向对象技术的集合。借助ActiveX技术,开发商和终端用户就能把来自不同商家的ActiveX组建无缝地集成在自己的应用程序中,从而完成特定的目的。避免低水平的重复开发。Matlab支持两种ActiveX技术: ActiveX控件封装集成和ActiveX自动化。ActiveX控件是指那些可视、可编程的集成于ActiveX容器的应用组件。最常见有Internet Explorer和Web Browser Control。第16页,共47页。8/4/202216ActiveX自动化使mat
11、lab能施控和受控于其它组件。当matlab受控于其它组件时,表现为自动化服务器。当matlab控制其它组件时,表现为自动化客户。matlab自动化服务器的功能包括:在matlab空间中执行命令;与matlab空间直接交换数据。matlab自动化客户的功能仅是matlab ActiveX控件封装集成功能的子集。第17页,共47页。8/4/202217第18页,共47页。8/4/202218第19页,共47页。8/4/202219第20页,共47页。8/4/202220第21页,共47页。8/4/202221八、M文件调试编写M文件时,错误在所难免。错误一般有两种:语法错误和运行错误。语法错误是
12、指变量名、函数名等的误写,标点符号的缺漏等。对于这类错误matlab能在运行时立即发现,终止执行,并给出相应的错误原因以及所在行号。运行错误是算法本身引起的,相对语法错误而言运行错误较难处理。第22页,共47页。8/4/202222 1、运行错误来源于算法模型与期望目标是否一致,程序模型是否与算法一致,涉及用户对期望目标原理的理解、对算法的理解,还涉及用户对matlab指令的理解,对程序流的理解,对matlab工作机理的理解。2、运行错误的表现形态较多,程序正常运行,但结果错误;程序不能正常运行而中断等。3、运行错误是动态错误。尤其是M函数文件,它一旦运行停止,其中间变量将被删除一空,错误查找
13、很难着手。运行错误难处理的原因在于:第23页,共47页。8/4/2022231、直接调试将重点怀疑语句行、指令行后的分号删除或改为逗号,使计算机结果显示于屏幕。在适当的位置,添加显示某些关键变量值的语句。利用echo命令,使运行时在屏幕上逐行显示文件内容。在程序的适当位置增添keyboard指令。当运行至keyboard指令时将暂停执行文件,并命令窗口出现K提示符。在K提示符后键入return命令,结束查看,原文件继续执行。第24页,共47页。8/4/2022242、调试器的使用Matlab不仅向用户提供了专门的指令调试工具,而且还提供了使用更为简便的图形调试器。它与M文件编辑器集成为一体。第
14、25页,共47页。8/4/202225图形式调试器第26页,共47页。8/4/2022263、程序性能优化Matlab主要的缺点是运行速度慢。Matlab6.5开始启用JIT(just in time)和加速器(accelerator)。程序优化包括两个步骤:找出耗时最多的程序瓶颈;用更好的程序取代瓶颈程序。第27页,共47页。8/4/202227提高matlab运行速度的有效措施循环向量化。尽量减少使用for(while),代之以向量化的数组运算。如:尽可能采用matlab提供的函数指令。k=0;for t=0:pi/20:2*pi;k=k+1;y(k)=cos(t);endt=0:pi/2
15、0:2*pi;y=cos(t);第28页,共47页。8/4/202228循环内数组的预配置。尽量避免数组在循环中的不断动态配置。采用MEX文件执行循环。在循环不可避免又特别费时的情况下,建议用户把该循环采用非解释执行的MEX文件表达。尽量采用M函数文件替代M命令文件。每次运行命令文件都必须把程序装入内存,然后逐句解释执行,十分费时。函数文件一旦被运行就驻留在内存中,因此较省时。尽量使用save和load命令实施数据的保存和获取。当数据交换既能采用save和load命令,又能采用I/O函数实现,应尽可能使用save和load命令。提高matlab运行速度的有效措施第29页,共47页。8/4/20
16、2229九、图形用户界面制作(GUI)用户界面(graphical user interface)指人与计算机之间交互作用的工具或方法。图形用户界面是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。用户通过一定的方法选择激活这些图形对象,使计算机实现特定功能。Matlab设计的演示程序demo是使用图形界面的最好范例。第30页,共47页。8/4/2022301、GUI设计原则简单性simplicity一致性consistency习常性familiarity第31页,共47页。8/4/2022312、GUI设计步骤明确设计任务,分析主要功能,绘制书面草图。上机制作静态界面。编写程序。
17、第32页,共47页。8/4/2022323、M文件制作图形用户界面第33页,共47页。8/4/202233str=fontname隶书 归一化二阶系统的阶跃响应曲线;text(0.12,0.93,str,fontsize,13);h_fig=get(H,parent);set(h_fig,unit,normalized,position,. 0.1,0.2,0.7,0.4);h_axes=axes(parent,h_fig,unit,. normalized,position,0.1,0.15,0.55,0.7,. xlim,0 1.5,ylim,0 1.8,fontsize,8);第34页,
18、共47页。8/4/202234h_text=uicontrol(h_fig,style,text,. unit,normalized,position,. 0.67,0.73,0.25,0.14,horizontal,. left,string,输入阻尼系数,z=);h_edit=uicontrol(h_fig,style,edit,. unit,normalized,position,. 0.67,0.59,0.25,0.14,horizontal,left,. callback,z=str2num(get(gcbo,string);,. t=0:0.1:15;,. for k=1:leng
19、th(z);,. y(:,k)=step(1,1 2*z(k) 1,t);,. plot(t,y(:,k);,. if length(z)1,hold on,end,. end;,. hold off,);第35页,共47页。8/4/202235h_push1=uicontrol(h_fig,style,push,. unit,normalized,position,. 0.67,0.37,0.12,0.15,string,. grid on,callback,grid on);h_push2=uicontrol(h_fig,style,push,. unit,normalized,posit
20、ion,. 0.67,0.15,0.12,0.15,string,. grid off,callback,grid off);第36页,共47页。8/4/202236界面菜单H_fig=figure第37页,共47页。8/4/202237菜单的隐去和显示隐去菜单set(H_fig,MenuBar,none);显示菜单set(gcf,MenuBar,figure);第38页,共47页。8/4/202238添加用户菜单h_menu=uimenu(gcf,label,color);第39页,共47页。8/4/202239制作下拉菜单 h_submenu1=uimenu(h_menu,label,Blue,.callback,set(gcf,Color,blue); h_submenu2=uimenu(h_menu,label,Red,.callback,set(gcf,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 6670-2026软质泡沫聚合材料落球法回弹性能的测定
- 2027届河南省商丘市柘城县九上化学期中学业水平测试模拟试题含解析
- 浙江省温州市苍南县2027届九上物理期末监测模拟试题含解析
- 江苏省泰州市名校2027届化学九上期中达标测试试题含解析
- 2027届山东省东营市胜利第二中学化学九年级第一学期期末调研试题含解析
- 2027届陕西师西安市高新一中学化学九上期中综合测试模拟试题含解析
- 2027届珠海市重点中学化学九年级第一学期期末复习检测模拟试题含解析
- 2027届宁夏银川九中学九上化学期末教学质量检测模拟试题含解析
- 云南省曲靖市马龙县2027届化学九年级第一学期期末学业质量监测模拟试题含解析
- 2026中国汽车涡轮增压器轴承润滑系统改进方案可行性报告
- 第一至三单元质量检测卷2026-2027学年统编版语文八年级上册
- 2026年下半年幼儿园教师资格证《保教知识与能力》真题试卷
- 宁德时代笔试题及答案
- 2026年教育政策理论测试题及答案
- 中医体质辨识评估流程
- 医院基建内部控制制度(2026版)
- 护理管理前沿动态与趋势
- 广东粤财投资控股有限公司2026春季校园招聘笔试历年典型考点题库附带答案详解
- 体育文化企业财务制度
- 2025年案件管理检察业务竞赛真题及答案
- 2026年4月18日衢州市属事业单位选调笔试真题及答案深度解析
评论
0/150
提交评论