ImageVerifierCode 换一换
你正在下载:

MatLab3.docx

[预览]
格式:DOCX , 页数:15 ,大小:117.08KB ,
资源ID:4231481      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4231481.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MatLab3.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MatLab3.docx

1、MatLab3 MatLab & 数学建模 授课: 唐 静 波 (九江学院理学院) 第三讲 MatLab程序设计一、 M文件我们前面所介绍在MATLAB所做的运算,是适合于所要计算的算式不太长或是想以交谈式方式做运算,如果要计算的算式很长有数十行或是须要一再执行的算式,则那样的方式就行不通了。MATLAB提供了所谓的 M-file 的方式,可让使用者自行将指令及算式写成巨集程式然后储存成一个特别的文档,其扩展名是m,譬如 picture.m,其中的picture就是文件名称。(1)编写M脚本文件的步骤 点击MATLAB指令窗工具条上的New File图标,就可打开如图所示的MATLAB文件编辑

2、调试器。用户即可在空白窗口中编写程序。输入如下一段程序 (picture.m)x=linspace(0,2*pi,20); y=sin(x); plot(x,y,r+) title(2D plot) 点击编辑调试器工具条图标,在弹出的Windows标准风格的“保存为”对话框中,选择保存文件夹,键入新编文件名(如picture),点击【保存】键,就完成了文件保存。(2)运行文件 使picture.m所在目录成为当前目录(系统默认路径),或让该目录处在MATLAB的搜索路径上. 然后在指令窗口运行以下指令,便可得到图形。picture 再来看另一个 M-file: area.m 的例子 % 新建M

3、-file, area.m % 计算一个球的体积 r = input(Type radius 输入半径:); Area=pi*r2; volume=(4/3)*pi*r3; fprintf(半径 The radius is %12.5fn,r) fprintf(面积 The area of a circle is %12.5fn,Area) fprintf(体积 The volume of a sphere is %12.5fn,volume)在指令窗口运行指令 area二、 M文件函数一个函数M文件与脚本文件类似之处在于它们都是一个有.m 扩展名的文本文件。如同脚本M文件一样,函数M文件不进

4、入命令窗口,而是由文本编辑器所创建的外部文本文件。一个函数的M文件与脚本文件在通信方面是不同的。函数与MATLAB工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。在函数内中间变量不出现在MATLAB工作空间,或与MATLAB工作空间不交互。一个函数的M文件的第一行把M文件定义为一个函数,并指定它的名字。它与文件名相同,但没有.m 扩展名。它也定义了它的输入和输出变量。M文件函数之间可以互相调用.M文件函数必须遵循以下特定的规则。 1. 函数名和文件名必须相同。例如,函数fliplr 存储在名为fliplr.m 文件中。 2. MATLAB头一次执行一个M文件函数时,它打开相应

5、的文本文件并将命令编辑成存储器的内部表示,以加速执行以后所有的调用。如果函数包含了对其它M文件函数的引用,它们也同样被编译到存储器。普通的脚本M文件不被编译,即使它们是从函数M文件内调用;打开脚本M文件,调用一次就逐行进行注释。 3. 在函数M文件中,到第一个非注释行为止的注释行是帮助文本。当需要帮助时,返回该文本。例如, help fliplr返回上述前八行注释。 4. 第一行帮助行,名为H1 行,是由lookfor 命令搜索的行。 5. 函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。 6. 函数可以按少于函数M文件中所规定的输入和输出变量进行调用,但不能用多于函数M文件中

6、所规定的输入和输出变量数目。如果输入和输出变量数目多于函数M文件中function 语句一开始所规定的数目,则调用时自动返回一个错误。 7. 当函数有一个以上输出变量时,输出变量包含在括号内。例如,V,D = eig(A)。不要把这个句法与等号右边的V,D 相混淆。右边的V,D 是由数组V和D 所组成。 8. 当调用一个函数时,所用的输入和输出的参量的数目,在函数内是规定好的。函数工作空间变量nargin 包含输入参量个数;函数工作空间变量nargout 包含输出参量个数。事实上,这些变量常用来设置缺省输入变量,并决定用户所希望的输出变量。例: ,计算f(1)f(2)+f2(3)首先建立一个M

7、函数:fun1.mfunction Y= fun1(x)Y=(x3 - 2*x2 + x - 6.3)/(x2 + 0.05*x - 3.14);在指令窗口运行以下指令:fun1(1)*fun1(2)+fun1(3)*fun1(3)ans = -12.6023例:计算阶层函数 fact.mfunction output = fact(n) if n = 1 output = 1; return; end output = n*fact(n-1); 【例】M函数文件示例。circle.mfunction sa = circle(r,s)%CIRCLE plot a circle of radii

8、 r in the line specified by s.% r 指定半径的数值% s 指定线色的字符串% sa 圆面积% circle(r) 利用蓝实线画半径为 r 的圆周线.% circle(r,s) 利用串 s 指定的线色画半径为 r 的圆周线.% sa=circle(r) 计算圆面积,并画半径为 r 的蓝色圆面.% sa=circle(r,s) 计算圆面积,并画半径为 r 的 s 色圆面.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 plo

9、t(x,s);else sa=pi*r*r; fill(real(x),imag(x),s)endaxis(square)三 MATLAB控制流for循环结构For循环允许一组命令以固定的和预定的次数重复。For循环的一般形式是: for x = array commands end在for和end语句之间的commands按数组中的每一列执行一次。【例】 for n=1:10 x(n)=sin(n*pi/10); end x x = Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 t

10、hrough 10 0.5878 0.3090 0.0000 For循环可按需要嵌套。n=0:1:10;for i=1:11for j=1:11y(i)=sin(n(i);n(j)=n(j)*10;endendy = Columns 1 through 7 0 -0.5064 0.9300 -0.8027 -0.1425 -0.9765 -0.5118 Columns 8 through 11 0.8586 -0.9957 0.9917 0.9287n = 1.0e+012 * Columns 1 through 7 0 0.1000 0.2000 0.3000 0.4000 0.5000 0

11、.6000 Columns 8 through 11 0.7000 0.8000 0.9000 1.0000可以利用break命令跳出for循环【例】一个简单的for循环示例。for i=1:10; %i依次取1,2,10,.x(i)=i; %对每个i值,重复执行由该指令构成的循环体,end; x %要求显示运行后数组x的值。 x = 1 2 3 4 5 6 7 8 9 10 while循环结构与For循环以固定次数求一组命令的值相反,While 循环以不定的次数求一组语句的值。While循环的一般形式是: while expression commands end只要在表达式里的所有元素为真

12、,就执行while和end 语句之间的commands。【例】 num=0;EPS=1; while (1+EPS)1 EPS=EPS/2; num=num+1; end num num = 53 EPS=2*EPS EPS = 2.2204e-016【例】x = zeros(1,6); % x是一个的零矩阵 i = 1; while i = 6, x(i) = 1/i; i = i+1; end xx =1.0000 0.5000 0.3333 0.2500 0.2000 0.1667可以利用break命令跳出while循环while循环可按需要嵌套。【例】Fibonacci数组的元素满足F

13、ibonacci 规则: ,;且。现要求该数组中第一个大于10000的元素。a(1)=1;a(2)=1;i=2;while a(i)5 cost=(1-20/100)*cost; end cost cost = 200假如有两个选择,If-Else-End结构是: if expression commands evaluated if True else commands evaluated if False end在这里,如果表达式为真,则执行第一组命令;如果表达式是假,则执行第二组命令。 当有三个或更多的选择时,If-Else-End结构采用形式 if expression1 comman

14、ds evaluated if expression1 is True elseif expression2 commands evaluated if expression2 is True elseif expression3 commands evaluated if expression3 is True elseif expression4 commands evaluated if expression4 is True elseif else commands evaluated if no other expression is True end 最后的这种形式,只和所碰到的、

15、与第一个真值表达式相关的命令被执行;接下来的关系表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。【例】if rand(1)0.5disp(i love you)elsedisp(i donot love you)end【例】一个简单的分支结构。cost=10;number=12;if number8 sums=number*0.95*cost;end,sums sums = 114.0000 【例】用for循环指令来寻求Fibonacc数组中第一个大于10000的元素。n=100;a=ones(1,n);for i=3:n a(i)=a(i-1)+a(i-

16、2); if a(i)=10000 a(i), break; %跳出所在的一级循环。 end;end,i ans = 10946i =21 switch-case结构【例】学生的成绩管理,用来演示switch结构的应用。%划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(1 z(i,j)=0.5457*exp(-0.75*y(i)2-3.75*x(j)2-1.5*x(j); elseif x(j)+y(i)=-1 z(i,j)=0.5457*exp(-0.75*y(i)2-3.75*x(j)2+1.5*x(j); else z(i,j)=0.7575

17、*exp(-y(i)2-6.*x(j)2); end endendaxis(-a,a,-b,b,min(min(z),max(max(z);colormap(flipud(winter);surf(x,y,z);MATLAB的输入与输出语句 输入语句 o 输入数值 x=input(please input a number:)please input a number:22x = 22o 输入字符串 x=input(please input a string:,s)please input a string:this is a string x = this is a string 输出语句

18、o 输出显示命令 自由格式 (disp) disp(23+454-29*4) 361disp(11 22 33; 44 55 66; 77 88 99) 11 22 3344 55 66 77 88 99disp(this is a string) this is a string 格式化输出 (fprintf)。 fprintf(The area is %8.5fn, area) % 注意输出格式前须有%符号,%跳行符号须有符号 The area is 12.56637 % 输出值为8位数含5位小数 在这里你如果学过c语言就能很好的理解了。o 错误消息显示命令 error(this is an error) ? this is an error关系操作符说明小于大于 =大于或等于= =等于 =不等于逻辑操作符说明&与|或非

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1