函数是模块化,抽象化的实施者。
如何查看matlab的内建函数
查看matlab内建的函数“mean.m”, 计算平均数
在命令行窗口输入edit(which('mean.m'))
会跳出一个.m文件
>> edit(which('mean.m'))
function y = mean(x,dim,flag,flag2)
%MEAN Average or mean value.
% S = MEAN(X) is the mean value of the elements in X if X is a vector.
% For matrices, S is a row vector containing the mean value of each
% column.
% For N-D arrays, S is the mean value of the elements along the first
% array dimension whose size does not equal 1.
%
.........
函数格式
function y = mean(x,dim,flag,flag2)
- function : 函数的关键字
- y: output返回值
- mean: 函数名字,这个函数名要和脚本名一样
- x,dim,flag,flag2 : input, 函数传参数。
例1:编写自由落体
x
=
x
0
+
v
0
+
1
2
g
t
2
x\ =\ x_0+v_0+\frac{1}{2}gt^2
x = x0+v0+21gt2
function x = freebody(x0,v0,t)
% calculation of free falling
% x0: initial displacement in m
% v0: initial velocity in m/sec
% t: the elapsed time in sec
% x: the depth of falling in m
x = x0 + v0 .* t + 0.5*9.8*t.*t
.*是元素和元素直接相乘。
运行:
>> freebody(0,0,10)
x =
490
ans =
490
例2:多个输出和输入
a
=
v
2
−
v
1
t
2
−
t
1
a\ =\ \frac{v_2-v_1}{t_2-t_1}
a = t2−t1v2−v1
F
=
m
a
F=ma
F=ma
function [a F] = acc(v2,v1,t2,t1,m)
a= (v2 - v1)./(t2-t1);
F=m.*a;
输出:
>>[Acc Force] = acc(20,10,5,4,1)
Acc =
10
Force =
10
函数默认变量相关
默认变量 |
说明 |
inputname |
函数输入的变量名 |
mfilename |
当前运行的函数的文件名 |
nargin |
函数输入参数的个数 |
nargout |
函数输出参数的个数 |
varargin |
可变长度的输入参数列表 |
varargout |
可变长度输出参数列表 |
比如:
function [volume] = pillar(Do,Di,height)
if nargin==2,
height=1;
end
volume=abs(Do.^2-Di.^2).*height*pi/4;
只输入2个参数,height会有默认值,相当于c++的默认参数
matlab的多参数输入列表
varargin:变输入参数列表。
- 指明它用小写的字母表示
- 在函数的参数列表中,varargin放最后面
- 函数执行,varargin就是一个1*n的cell数组
function var(a,varargin)
fprintf(' arg num: %d\n',nargin);
celldisp(varargin)
可参考
https://www.cnblogs.com/yinheyi/p/5571992.html
调用输出
>> var( 1,1,pi,3)
arg num: 4
varargin{1} =
1
varargin{2} =
355/113
varargin{3} =
3
同理,varargout也是这样的:
varagrout是一个元胞数组
返回多个参数时,把函数中的相应变量赋给varagrout
可参考:https://blog.csdn.net/congzhao27/article/details/17994799
句柄
>> f = @(x) exp(-2*x);
x = 0:0.1:2;
plot(x,f(x));
f 是个指针:指向exp这个函数
(x) 是out,范围值
(-2*x) 是in 传参数
总结:
matlab函数的特点:
- function关键字申明为函数,后面和调用函数一样的表达式。
- 参数类型无需指定,直接类型重载
- 参数个数可获得,内部传参个数重载
- 支持可变参数数量的输入和输出
- 使用灵活,应写好注释,对应原理
参考于
MATLAB教程_台大郭彦甫 https://www.bilibili.com/video/BV1GJ41137UH?p=1
被抛弃的写随笔公众号改写技术文章了,感兴趣的可以关注公众号:王崇卫