- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章MATLAB程序设计-2函数剖析
第三章 MATLAB程序设计-2
主要内容:
函数
程序调试
函数
1.1 函数文件的定义
1、定义格式:
function [返回变量列表]=函数名(输入变量列表) %注释
输入、返回变量格式的检测
函数体语句
2、nargin、nargout:函数调用时自动生成的两个变量,分别描述输入、输出变量的实际个数;
3、help命令,可显示注释行信息;
4、函数文件遵循的规则:
(1)函数名必须和文件名相同;
(2)函数文件有输入和输出参数;(也不必须,区别于脚本文件)例 test.m
(3)函数文件可以有0个或多个输入、输出变量。但不能多于定义的变量个数;
(4)函数文件中的变量(除了输入、输出变量)有自己的工作空间,除非特别申明(global),否则全为局部变量,函数执行完退出,变量也相应结束生命周期;
【例】3-3
详见函数文件comp.m
function y=comp(x)
%ex3_3:comp(x)
%comp(x)=(x+2)^2*x
%comp(x)returns value of the expression
z=x+2;
y=z^2*x;
%end of function and return y
1.2 函数调用
(1)命令行调用或者M文件调用均可;函数调用语法/格式:
a 命令行方式调用
functionname in1 in2 …inN
不能为返回参数赋值,参数以文字字符形式传递
b 函数式调用
out=functionname(in1,in2,…,inN);
[out1,out2,…,outN]=functionname(in1,in2,…,inN);
参数为值传递
(2)函数运行后驻留内存,用clear命令清除:
clear functionname; 清除指定函数
clear functions; 清除所有函数
clear all; 清除所有变量和函数
(3)存在同名函数的调用顺序:
a 变量
b 子函数
c 私有函数
d 类的构造函数
e 重载函数
f 当前路径上的函数
g 搜索其他路径
注:可用which命令查询会使用哪个函数
【例】3-4 3-5
%例3_4
help disp
hello=3;
disp hello %命令行方式
disp(hello)%函数方式
%例3_5
help strcmp
str1=one;
str2=one;
strcmp str1 str2 %命令行方式
strcmp(str1,str2)%函数方式
1.3 参数传递
1.3.1 返回参数
a 返回参数的个数可以少于函数定义时的返回参数个数,但不可以多于;
b 返回参数按照定义的顺序返回;
【例】3-6
function [a b c]=myfun(x,y)
b=x*y;
a=99;
c=x.^2;
1.3.2 输入输出参数检查:nargin、nargout:检查参数个数
【例】-7 testarg.m
function [c d]=testarg(a,b)
if((nargin==1)((nargout==1)))
disp((nargin and nargout=1))
c=a^2;
elseif((nargin==2)*((nargout==2)))
disp(nargin and nargout=2)
c=a^3;
d=a*b;
else
disp(error input and output);
end
1.3.3可选输入输出参数:varargin、varargout
a 用vargin、vargout传递任意数目的输入、输出参数;
b MATLAB将输入参数打包成一个细胞数组;
c 输出参数须在程序中打包;
d 定义:
function varargout=functionname(vin1,vin2,…)
:varargout在函数中定义;
:MATLAB按照varargout的定义依次赋值给调用时的返回变量;
function [vout1 vout2…varargout]=functionname(vin1,vin2,…)
:除varargout外函数定义行上还有其他的返回参量
:MATLAB依次为最左端的变量赋值,最后再顺序返回varargout的值;
【例】:3-8 byRow.m
function varargout=byRow(a)
%矩阵翻转
varargout{1}=With Varargout construct by row ...;
for k=1:length(a)
row=length(a)-(k-1);
varargout{k+1}=a(row
文档评论(0)