matlab基础语法2_matlab的函数_句柄

函数是模块化,抽象化的实施者。

如何查看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 = t2t1v2v1
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:变输入参数列表。

  1. 指明它用小写的字母表示
  2. 在函数的参数列表中,varargin放最后面
  3. 函数执行,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函数的特点:

  1. function关键字申明为函数,后面和调用函数一样的表达式。
  2. 参数类型无需指定,直接类型重载
  3. 参数个数可获得,内部传参个数重载
  4. 支持可变参数数量的输入和输出
  5. 使用灵活,应写好注释,对应原理

参考于
MATLAB教程_台大郭彦甫 https://www.bilibili.com/video/BV1GJ41137UH?p=1

被抛弃的写随笔公众号改写技术文章了,感兴趣的可以关注公众号:王崇卫
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值