第三讲__ Matlab程序设计
教学目的:掌握穷举方法解决问题: for循环;了解变量的范围: global;掌握函数的调用方法: 子函数;掌握三种自定义函数方式:函数文件、内联函数inline和函数句柄@;掌握文件的读写方法fopen,fprintf,fclose.
教学重点:穷举方法解决问题:for循环;对于各种实际问题,结合实例,根据穷举法,利用for循环和递归,来掌握数学软件使用方法和技巧.
教学难点:变量的适用范围以及编程中数据的记录.
一、M文件
我们前面所介绍在Matlab所做的运算,是适合于所要计算的算式不太长或是想以交谈式方式做运算,如果要计算的算式很长有数十行或是须要一再执行的算式,则那样的方式就行不通了.Matlab提供了所谓的 M-file 的方式,可让使用者自行将指令及算式写成巨集程式然后储存成一个特别的文档,其扩展名是m,譬如 picture.m,其中的picture就是文件名称.
(1)编写M脚本文件的步骤
l 点击Matlab指令窗工具条上的New File图标_ ,就可打开如图所示的Matlab文件编辑调试器.用户即可在空白窗口中编写程序.
输入如下一段程序 (picture.m)
x=linspace(0,2*pi,20);
y=sin(x);
plot(x,y,'r+')
title('2D plot')
点击编辑调试器工具条图标_ ,在弹出的Windows标准风格的“保存为”对话框中,选择保存文件夹,键入新编文件名(如picture),点击【保存】键,就完成了文件保存.
(2)运行文件
l 使picture.m所在目录成为当前目录(系统默认路径),或让该目录处在Matlab的搜索路径上.
l 然后在指令窗口运行以下指令,便可得到图形.
picture
再来看另一个 M-file: area.m 的例子
% 新建M-file, area.m
% 计算一个球的体积
r = input('Type radius 输入半径:');
Area=pi*r^2; volume=(4/3)*pi*r^3;
fprintf('半径 The radius is %12.5f¥n',r)
fprintf('面积 The area of a circle is %12.5f¥n',Area)
fprintf('体积 The volume of a sphere is %12.5f¥n',volume)
在指令窗口运行指令_ area
二、M文件函数
一个函数M文件与脚本文件类似之处在于它们都是一个有.m 扩展名的文本文件.如同脚本M文件一样,函数M文件不进入命令窗口,而是由文本编辑器所创建的外部文本文件.一个函数的M文件与脚本文件在通信方面是不同的.函数与Matlab工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量.在函数内中间变量不出现在Matlab工作空间,或与Matlab工作空间不交互.一个函数的M文件的第一行把M文件定义为一个函数,并指定它的名字.它与文件名相同,但没有.m 扩展名.它也定义了它的输入和输出变量.
M文件函数之间可以互相调用,但M文件函数必须遵循以下特定的规则.
1.函数名和文件名必须相同.例如,函数fliplr 存储在名为fliplr.m 文件中.
2.Matlab头一次执行一个M文件函数时,它打开相应的文本文件并将命令编辑成存储器的内部表示,以加速执行以后所有的调用.如果函数包含了对其它M文件函数的引用,它们也同样被编译到存储器.普通的脚本M文件不被编译,即使它们是从函数M文件内调用;打开脚本M文件,调用一次就逐行进行注释.