(matlab)第8章-m文件程序设计基础课件

上传人:F****n 文档编号:88114625 上传时间:2019-04-19 格式:PPT 页数:85 大小:1.22MB
返回 下载 相关 举报
(matlab)第8章-m文件程序设计基础课件_第1页
第1页 / 共85页
(matlab)第8章-m文件程序设计基础课件_第2页
第2页 / 共85页
(matlab)第8章-m文件程序设计基础课件_第3页
第3页 / 共85页
(matlab)第8章-m文件程序设计基础课件_第4页
第4页 / 共85页
(matlab)第8章-m文件程序设计基础课件_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《(matlab)第8章-m文件程序设计基础课件》由会员分享,可在线阅读,更多相关《(matlab)第8章-m文件程序设计基础课件(85页珍藏版)》请在金锄头文库上搜索。

1、1,教学内容,第1章 MATLAB概论 第2章 矩阵运算基础 第3章 数值计算基础 第4章 符号数学基础 第5章 基本图形处理功能 第6章 高级图形处理功能 第7章 图形用户界面设计 第8章 M文件程序设计基础 第9章 Simulink基础,2,8.1 M文件 8.2 数据及数据文件 8.3 程序的流程控制 8.4 程序举例,第8章 M文件程序设计基础,内容提要:,3,8.1 M 文 件,4,实现一次执行多条MATLAB语句的方式,M文件的引入,MATLAB的工作方式有两种:,交互式的指令行操作方式,在命令窗口中执行命令,适合于对简单问题的数学演算、结果分析及测试.,M文件是由MATLAB语句

2、(命令或函数)构成的ASCII码文本文件,文件以 “.m”为扩展名。,M文件的编辑工作方式,5,M文件的两种形式,命令文件(Script File) 函数文件(Function File),6,8.1.1 命令文件,适用于: 自动执行一系列的命令与函数,避免在命令窗口中重复输入。,组成: 命令与函数的组合,没有输入、 输出参数,变量: 命令文件结束后,其运行时所产生的变量仍然保存在workspace中,直到被clear或退出MATLAB,7,clear clc theta = -pi:0.01:pi; rho(1,:) = 2*sin(5*theta).2; rho(2,:) = cos(10

3、*theta).3; rho(3,:) = sin(theta).2; rho(4,:) = 5*cos(3.5*theta).3; for k =1:4 % 循环控制 subplot(2,2,k) % 图形输出 polar(theta,rho(k,:) % 绘制极坐标图 end,【例8-1】绘制花瓣图,8,9,10,8.1.2 函数文件,以function语句引导的M文件,可接受输入和返回输出参数。,函数文件主要用处: 利用MATLAB语句构造一个新的函数。,11,函数文件的组成:,函数定义行:文件第一行 function nargout1,nargout2,=name(nargin1,na

4、rgin2,) 本行是函数文件的重要标志; 函数名尽可能与M文件同名.,H1行: “%”开始,函数调用方法和功能简介,lookfor查询时显示.,函数体:包含所有函数程序代码,是函数的主体部分。,注释:以“%”开始,可出现在函数文件的任何位置,帮助文本:函数调用方法和功能详细介绍,【例】右健 sphere,sin观察函数组成结构,12,function sa = circle82(r,s) %用指定的半径和线色绘圆,并计算面积 % sa = circle82(r,s) % r 指定半径的数值 % s 指定线色的字符串 % sa 圆面积 % circle82(r) 利用蓝实线画半径为 r 的圆周

5、线 % circle82(r,s) 利用串 s 指定的线色画半径为 r 的圆周线 % sa=circle82(r) 计算圆面积,并画半径为 r 的蓝色圆面 % sa=circle82(r,s) 计算圆面积,并画半径为 r 的 s 色圆面,例circle82.m: 绘制圆并计算其面积的函数,13,if nargin2 error(输入变量太多。); end; if nargin=1 s=b; end; clf; t=0:pi/100:2*pi; x=r*exp(i*t); if nargout=0 plot(x,s); else sa=pi*r*r; fill(real(x),imag(x),s

6、) end axis(equal),14,编程结束后,以circle82.m的文件名保存,r=2;s=m;sa=circle82(r,s),sa = 12.5664,在命令窗口中输入:,可计算出圆的面积并绘图:,15,16,函数文件中的变量: 在函数文件中定义及使用的变量都是局部变量,只在本函数工作区内有效,函数运行结束后,这些局部变量被释放,不再占内存空间。 要想使用工作空间中的变量,必须将其定义为全局变量。,17,8.1.3 局部变量(local variables) 全局变量(global variables),局部变量:只在本函数工作区内有效 全局变量:可以在整个M文件的多个函数中共享

7、 全局变量的定义 global VAR1 VAR2 ,一般变量名使用大写,如global A, B C 工作空间中的变量都是全局变量,18,全局变量应用: 在用到全局变量的函数里均要声明,例:goldensection.m goldensection.fig : 确定黄金分割点,19,20,例:goldensection.m goldensection.fig : 确定黄金分割点,function pushbutton1_Callback(hObject, eventdata, handles) global x1 y1 x2 y2 x1,y1=ginput(1);plot(x1,y1,*)

8、;axis manual;x2,y2=ginput(1); hold on ;plot(x2,y2,+) ;plot(x1,x2,y1,y2,linewidth,2) gd=goldensection;plot(gd(1),gd(2),or,markerfacecolor,r) function gd=goldensection global x1 y1 x2 y2 GSCOF=(sqrt(5)-1)/2; DS=x1,y1;DE=x2,y2; gd=DS+(DE-DS)*GSCOF;,21,8.2 数据及数据文件,22,8.2.1 数据类型,数 组,结构 structure,数值 numer

9、ic,字符 char,java类 java class,函数 句柄 function handle,单精度 single,双精度 double,整数 Int8,unit8 Int16,unit16 Int32,unit32,单元 cell,稀疏矩阵 sparse,用户类 inline,23,【例】学生的成绩管理,演示cell structure。,clc;clear; Name= Jack,Marry,Peter, Rose,Tom; Mark=72,83,56,94,100;Rank=cell(1,5); S=struct(Name,Name,Marks,Mark,Rank,Rank);,2

10、4,8.2.2 数据文件,MATLAB允许接受的数据文件: mat为扩展名的二进制文件 txt .dat等为扩展名的ASCII码数据文件 以上两种文件使用save load进行存储 bmp .jpg .tif等为扩展名的图像文件,使用imread 和 imwrite命令读入和存储 wav为扩展名的声音文件,使用wavread和 wavwrite命令读入和存储,详见192页 表8-3,25,8.2.3 数据输入向导,fileimportwizard,mat 数据文件,导入到工作空间中的变量名与M文件中的变量名及变量类型相同 ASCII码数据文件,向导的头排单选框用于选择数据列之间的分隔符。导入到

11、工作空间中的数据的变量名为data,头文本内容变量名为textdata.如果没有头文本内容,则变量名与文件名相同,26,图形数据文件 :导入到工作空间中的数据变量名与文件名相同。 声音数据文件:导入到工作空间的数据变量名与文件名相同,变量类型为结构数组,其中包括数据和采样频率两部分 剪贴板数据:要导入的数据已经放在系统的剪贴板中,可在导入窗口中选择clipboard单选框,再按照提示完成数据导入。导入到工作空间中的数据变量名为clipboarddata,变量类型为单元数组。,27,save 将matlab工作空间中所有变量以二进制格式存储(此时默认文件名为matlab.mat) save df

12、ile 将matlab工作空间中所有变量以二进制格式存入名为dfile.mat文件 save dfile x 将变量x以二进制形式存入dfile.mat文件,8.2.4 数据的输入与输出,数据的存储save,28,save dfile.dat x-ascii (将x以8位ASCII码数据文件形式存入dfile.dat ) save dfile.dat x-ascii-double(将x以16位ASCII码数据文件形式存入dfile.dat ) save(fname,a,-ascii) fname为包含文件名的字符串(将a以ASCII码数据文件形式存入fname定义的文件中),29,load 将

13、磁盘文件matlab.mat的内容读入内存 load dfile将磁盘文件dfile.mat的内容读入内存 load dfile.dat(将磁盘文件dfile.dat的内容读入内存.这是一个ASCII码文件.系统自动将文件名定义成变量名 S=load(fname) fname是预定义的包含文件名的字符串,load将由fname.mat定义文件名的数据文件调入结构变量S中。,数据的导入函数 load,30,8.3 程序的流程控制,31,顺序结构,程序结构,分支结构,循环结构,32,分支结构,33,MATLAB中提供了8种控制程序流程的语句:,for while if else swich try

14、 continue break return,34,MATLAB中提供了两种循环方式,即:,8.3.1 循环语句,forend 循环 whileend 循环,35,for 循环变量=m:s:n 循环体语句 end,for语句,m:初值,s:步长(默认为1),n:终值。 执行次数已知,格式一:,36,【例8-3】简单的for循环示例。,clc clear n=10; for i=1:n x(i)=(i+1).2; end x,37,【例8-4】for循环的嵌套。,m=3; n=4; for i=1:m for j=1:n a(i,j)=1/(i+j-1); end end format rat

15、a,38,思考:一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。,for m=100:999 m1=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10); %求m的十位数字 m3=rem(m,10); %求m的个位数字 if m=m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end,答案之一:,39,for 循环变量=矩阵表达式 循环体语句 end,格式二:,执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。,40,s=0; a=12,13,14;15,16,17;1

16、8,19,20;21,22,23; for k=a s=s+k; end disp(s);,思考:下列程序的执行结果。,39 48 57 66,答案:,41,while 表达式 语句体 end,while语句,表达式的结果非零,就重复执行。,格式:,条件循环语句,执行次数未知,42,【例8-6】求解使n!达到100位数的第一个n。,n=1; while prod(1:n)1e100 n=n+1; end n,43,sum=0; cnt=0; val=input(Enter a number (end in 0):); while (val=0) sum=sum+val; cnt=cnt+1; val=input(Enter a number (end in 0):); end if (cnt 0) su

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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