- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
5.1 MATLAB程序设计
5.2 应用实例;5.1 MATLAB程序设计;5.1.1 M文件;1.建立新的M文件
(1)菜单操作:MATLAB命令窗口的File菜单 → New菜单项 → M-file命令。
(2)命令操作:在MATLAB命令窗口输入命令edit。
(3)命令按钮操作:单击MATLAB命令窗口工具栏上的“新建”命令按钮。
2. 编辑已有的M文件
3. M文件的分类 P116 4.1.2内容
分类:脚本文件(Script File)和函数文件(Function File)。
主要区别。
;M文件的基本结构;1 脚本文件
没有输入和输出
由一系列指令组成
可在命令窗口直接运行
产生的所有变量存储在workspace中。
例 exam5_1.m。;(1) 函数文件的基本结构
函数文件由function语句引导
其基本结构为:
function 输出形参表=函数名(输入形参表)
%注释说明部分
函数体语句;函数文件的格式说明
(1)关于函数文件名: 函数文件名与函数名也可以不相同(一般设为相同!)。当两者不同时,MATLAB将忽略函数名而确认函数文件名,因此调用时使用函数文件名。
(2)关于注释说明部分。注释说明包括三部分内容:①紧随函数文件引导行之后以%开头的第一注释行。②第一注释行及之后连续的注释行。③与在线帮助文本相隔一空行的注释行。 ;函数调用的一般格式:
[输出实参表]=函数名(输入实参表)
注意:等号左边是方括号,右边输入参数用括号; 例5.1 编写函数文件求半径为r的圆的面积和周长
function [s,p]=fcircle(r)
%FCIRCLE calculate the area and perimeter of a circle of radii r
%r 圆半径
%s 圆面积
%p 圆周长
s=pi*r*r;
p=2*pi*r;
以上函数文件以文件名fcircle.m存入c:\matlab7\work\mas下,然后在MATLAB命令窗口调用该函数:
[s,p]=fcircle(10);函数的递归调用
例:利用递归调用函数文件factor.m:
function f=factor(n)
if n<=1
f=1;
else
f=factor(n-1)*n;
end
在命令文件main5_1.m中调用函数文件factor.m求s=1!+2!+3!+4!+5!。;函数所传递参数的可调性
在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行??理
例:nargin用法示例;函数文件examp.m:
function fout=charray(a,b,c)
if nargin==1
fout=a;
elseif nargin==2
fout=a+b;
elseif nargin==3
fout=(a*b*c)/2;
end
命令文件main5_2.m:
x=[1:3];y=[1;2;3];
examp(x)
examp(x,y')
examp(x,y,3);全局变量用命令global定义。函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离
例 全局变量应用示例。
先建立函数文件wadd.m,该函数将输入的参数加权相加。
function f=wadd(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;
在命令窗口中输入:
global ALPHA BETA
ALPHA=1;
BETA=2;
s=wadd(1,2);5.1.3 数据的输入输出指令;input函数;disp函数;例 求一元二次方程ax2 +bx+c=0的根。
程序如下:
a=input('a=?');
b=input('b=?');
c=input('c=?');
d=b*b-4*a*c;
x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];
disp(['x1=',num2str(x(1)),',x2=',num2str
文档评论(0)