概述
转自易百教程,以及手头上的一些下载下来的tutorial
1 function的命名不能和matlab中的已有命令函数一致
2 每个function都会保存在一个m文件,并且m文件的名称和function的名称一致
3 function里面用到的函数都是固定单一的
4 function内部运行,如果一定要输出,那就只能用disp
5 function不一定有input和output的,而且input和output的个数可以不限制
6 函数语句一般表达式
funct ion out = MyFunction ( in )
% This i s a comment ( notice the %)
% Explain what your funct ion does here and i t w i l l pop up when
% you type help MyFunction in the con s o l e .
%
% MyFunction returns the square of the input
out = in ˆ 2;
end
7 主函数和子函数
我们写一个名为quadratic 函数计算一元二次方程的根。
则该函数将需要三个输入端,二次系数,线性合作高效的和常数项。它会返回根。
函数文件quadratic.m将包含的主要quadratic 函数和子函数disc 来计算判别。
function [x1,x2] = quadratic(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c); x1 = (-b + d) / (2*a);x2 = (-b - d) / (2*a);
end
% end of quadratic
function dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end
% end of sub-function
8 没有input和output的function
主程序
% script file for cuboid
length=5;
breadth=4;
depth=3;
% call the function cuboid
volume = cuboid(length,breadth,depth);
disp(volume);
子函数
function vol = cuboid(len,br,dep)
% Function to return the volume of a cuboid given
% the length len, breadth br and depth dep
vol = len*br*dep;
return;
9 多个input和多个output
function vol = cuboid(len,br,dep)
% Function to return the volume of a cuboid given
% the length len, breadth br and depth dep
vol = len*br*dep;
return;
function [vol, surf] = cuboid(len,br,dep)
% Function to return the volume and surface area of a cuboid given
% the length len, breadth br and depth dep
vol = len*br*dep;
surf = 2*(len*br + len*dep + br*dep);
return;
10 匿名函数的使用
f = @(arglist)expression
power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)
11 嵌套函数
function x = A(p1, p2)...B(p2)
function y = B(p3)
...
end
...
end
让我们重写quadratic函数,从前面的例子,但是,这一次的 disc 函数 将是一个嵌套函数。
创建一个函数文件quadratic2.m,并输入下面的代码:
function [x1,x2] = quadratic2(a,b,c)
function disc
% nested function
d = sqrt(b^2 - 4*a*c);
end
% end of function disc
disc;x1 = (-b + d) / (2*a);x2 = (-b - d) / (2*a);
end
% end of function quadratic2
12 私有函数
一个私有函数是一个主要的函数,是只看得见一组有限的其它函数。如果不想公开的执行的一个函数,可以创建私有函数。
私有函数驻留特殊的名字私人的子文件夹中。
他们是可见的,只有在父文件夹的函数。
我们重写quadratic 函数。然而,这时候,计算的判别式disc 函数,这是一个私有函数。
创建一个子文件夹命名为私人工作目录。它存储在以下函数文件disc.m:
function dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end
% end of sub-function
在工作目录,并创建一个函数quadratic3.m中输入下面的代码:
function [x1,x2] = quadratic3(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end
% end of quadratic3
12 全局变量 global
全局变量可以共享由一个以上的函数。对于这一点,需要将变量声明为全局在所有的函数可使用。
如果想访问该变量从基工作区,然后在命令行声明的变量。
全局声明必须出现在变量中实际上是使用功能。这是一个很好的做法是使用大写字母为全局变量的名称,以区别于其他变量。
例如在下面的一个例子中,可以看到命令global 后面的 Endtime这一个变量,是作为全局变量,可用于主程序和子函数
nowt = num2cell(fix(clock));
addt = cell(1,6);
addt = {0,0,0,0,0,0 };
addt{1,6} = input('nn count down from____secnn'); %% 通过input你想要倒数的秒数,即可以倒数
a = cell2mat(nowt);
b = cell2mat(addt);
count = a + b; %% 这里的count最后会用于下面的倒数,是double格式
Endtime=[count];
t = timer('StartDelay', 0,'Period',0.05,'TasksToExecute', 10000,...
'ExecutionMode','fixedRate');
t.TimerFcn = {@mycallback}; %% 引入function 子函数
start(t)
%子函数
function mycallback(t,events,arg_str)
%mycallback.m
global Endtime
Lefttime=etime(Endtime,clock);
if Lefttime<0
stop(t);
disp('Times up!!')
return
end
LeftMillionSeconds=round(rem(Lefttime,1)*1000);
LeftSeconds=floor(rem(Lefttime,60));
LeftMinutes=floor(rem(Lefttime/60,60));
% r=sprintf('剩余时间:%d分%d秒%d',LeftMinutes,LeftSeconds,LeftMillionSeconds);
% disp(r)
13 return 语句
The return statement indicates the end of the function and asks MATLAB to return to the place from which
the function was called. You can call functions from the command window of course, or from script files, or
even from other functions
最后
以上就是粗心毛衣为你收集整理的[初学笔记] matlab 中的 function, return,global的全部内容,希望文章能够帮你解决[初学笔记] matlab 中的 function, return,global所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复