matlab04 matlab 编程2_1

上传人:suns****4568 文档编号:85154215 上传时间:2019-03-07 格式:PPT 页数:24 大小:252KB
返回 下载 相关 举报
matlab04 matlab 编程2_1_第1页
第1页 / 共24页
matlab04 matlab 编程2_1_第2页
第2页 / 共24页
matlab04 matlab 编程2_1_第3页
第3页 / 共24页
matlab04 matlab 编程2_1_第4页
第4页 / 共24页
matlab04 matlab 编程2_1_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《matlab04 matlab 编程2_1》由会员分享,可在线阅读,更多相关《matlab04 matlab 编程2_1(24页珍藏版)》请在金锄头文库上搜索。

1、1,Matlab 编程,M 文件介绍,用 Matlab 语言编写的程序,称为 M文件;,根据调用方式的不同, M文件可分为两类: 1) 脚本文件(Scripts) / 文本文件, 可以直接在 Matlab 环境下运行。 2) 函数文件(Functions), 提供Matlab的外部函数,供其它M文件调用。,M文件以“.m”为扩展名,可以用任何文本编辑器来建立或修改,最常用的是 Matlab自带的编辑器。,2,函数文件,如果M文件的第一行以function开头,则该M文件为函数文件。函数文件通常包括以下几部分:,1.函数定义行(必须) 2.H1行 3.函数帮助文本 4.函数体(必须) 5.注释,

2、3,例:,function y = mean(x) % MEAN Average or mean value. % For vectors, MEAN(X) is the mean value % of the elements in X. For matrices, % MEAN(X) is a row vector containing % the mean value of each column. m,n=size(x); if m =1 m=n; end y = sum(x)/m;,函数定义行,H1行,帮助文本,函数体,4,函数文件,1.函数定义行 function y = mean

3、(x) 其中function是定义函数的关键字,mean是函数名,y为输出变量,x是输入变量。 当函数有多个输出变量时,可使用方括号,如: function x, y, z = sphere(rho, phi, theta) 若没有输出变量,直接略去输出部分,或用空方括号,如: function printresult(x) 或 function =printresult(x),注:函数名必须与文件名相同, 如上面的函数文件名为 mean.m,5,函数文件,2. H1行 M文件中以“%”开头的行为注释行,不被Matlab执行。函数文件的第二行一般为注释行。H1行不仅可以被help命令显示,而且

4、,lookfor命令只在H1行内搜索。因此,H1行包含了该函数的重要信息。,3.函数帮助文本 这部分以开头,详细介绍该函数的功能和使用方法。这部分内容可以用help命令显示。,6,函数工作空间,每个函数被调用时都会建立自己独立的存储区域,称为函数工作空间,用于保存函数中使用的(局部)变量,函数调用结束后,该空间被释放。,除了用global定义的变量外,函数中使用和生成的变量都是局部变量,这些变量的值只能通过输入和输出变量与其它M文件进行数据传递。,7,函数文件,4.函数体 函数的主体部分,可包括Matlab的任何命令或函数,以及用户自己编写的函数等。,5.注释 以开头的行,可以加在函数的任何位

5、置,也可以加在一个语句之后,以便对该行进行解释。主要增加函数的可读性。,在函数文件中,除“函数定义行”和“函数体”外,其它部分都可以省略。但增加注释是个良好的编程习惯。,8,9,Matlab 自定义函数,Matlab自定义函数的五种方式:,命令/函数文件+ 函数文件多个M 文件 函数文件 + 子函数一个M 文件 inline + 命令/函数文件无需M 文件 syms + subs 方式无需M 文件 字符串 + subs 方式无需M 文件,10,Matlab 自定义函数,方式(1):命令/函数文件 + 函数文件,%命令/函数文件:myfile1.m fid=fopen(myfile1.txt,w

6、); for t=1:10; y=mylfg(t); fprintf(fid,%4d(1/3) = %6.4fn,t,y); end fclose(fid);,%函数文件:mylfg.m function y = mylfg(x) y=x.(1/3);,函数必须单独写一个文件! 不能与命令文件放在同一个文件中!,11,Matlab 自定义函数,方式(2):函数文件 + 子函数,%函数文件:funtry2.m function =funtry2() fid=fopen(myfile2.txt,w); for t=1:100; y=lfg1(t); fprintf(fid,%4d(1/3) = %

7、6.4fn,t,y); end fclose(fid); function y=lfg1(x) %子函数1 y=x.(1/3);,函数中可以定义一个或多个子函数,此时我们称该函数为主函数,子函数只能被该主函数调用或在同一个文件中的其它子函数调用!,12,Matlab 自定义函数,方式(3):inline + 命令/函数文件,inline 命令可以用来定义一个内联函数。,格式:f=inline(函数表达式, 变量1, 变量2,.),调用方式:f(数值列表),注:代入的数值列表顺序应与定义时的变量名顺序一致。,例:,13,Matlab 自定义函数,方式(3续):inline + 命令/函数文件,这

8、种函数定义方式是将 f 作为一个内部函数调用。其特点是:调用方式最接近于我们平时对函数的定义,使程序更具可读性。同时由于它是基于MATLAB的数值计算内核的,所以它的运算速度很快,程序更有效率。,14,Matlab 自定义函数,方式(3续):inline + 命令/函数文件,15,Matlab 自定义函数,%函数文件:function =funtry3() lfg=inline(x.(1/3); %表达式两端的单引号不可缺少 fid=fopen(myfile3.txt,w); for t=1:50; y=lfg(t); fprintf(fid,%4d(1/3) = %6.4fn,t,y); e

9、nd fclose(fid); ezplot(lfg,0,50),X,方式(3续):inline + 命令/函数文件,16,y=x3+x5 diff(y) ans = ? syms x; y=x3+x5; diff(y),17,Matlab 自定义函数,注:由于在syms中已经定义过符号,在subs 中x外的单 引号可以省略。但如果在syms后又定义过x=数值, 则必须subs(f,x,x)否则不可替换。,方式(4): syms + subs,syms定义一个符号表达式,用subs命令调用。,格式:syms f x %定义符号 f=1/(1+x2); %定义符号表达式,调用:subs(f,x,

10、代替x的数值或符号),18,Matlab 自定义函数,这种方法的一个特色是可以用符号作为替换。例如:,方式(4续): syms + subs,当然它的缺点也是明显的,由于使用符号运算内核,其速度比不上直接的数值运算。,19,Matlab 自定义函数,注:此处 x 外的引号不可以去除。该方式可以代入字符,但字符不能参与运算,否则将自行转化成该字符的 ASCII码运算,这与我们想象的结果大相径庭。,方式(5):字符串 + subs,直接定义一个字符串,用subs命令完成调用。,这种方法的优点是占内存字节最小,定义格式方便自由。缺点是无法对字符进行符号转化。,20,Matlab 自定义函数,subs

11、命令的一种比较方便的调用方法:,当所要替代的符号在调用前都已经有了数值定义,则可以直接调用:subs(f),例:,关于 subs 的一个注解:,21,22,作业,1. Fibonacci数列定义如下: f1=1 f2=1 fn=fn-1+fn-2 (n2) 求Fibonacci数列的前20项,并用plot函数绘制,并将前20项结果输出到文本文件中。,23,2 编写程序计算 x属于【3,3】区间,步长0.01 (-x24x3)/2 -3=x=-1 Y= -x2+1 -1=x=1 (-x2+4x-3)/2 1=x=3 Y结果输出到文件中.,24,3 利用menu函数输入选择参数ch。当ch1时,产生【10,10】之间均匀分布的随机数;当ch4时,产生均值为0,方差为1的正态分布随机数。要求使用switch语句。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

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