自定义函数:能够完成相对独立功能的代码封装城的模块。
# m 文件自定义函数
# MATLAB 函数的基本结构
函数的定义:
function[输出形参表:形参1,形参2,……] = 函数名(输入形参表:形参1,形参2……) | |
函数体 | |
end |
这里的 end
关键字可以省略。
函数的调用:
[输出实参表]= 函数名 (输入实参表) |
函数中遇到 return
关键字时,将退出函数体,函数调用结束。
函数体里也可以定义一个或几个函数,称为子函数。
注意:子函数只能存在于主函数内,不独立存在;子函数在主函数的位置可以任意,不影响使用;子函数只能被主函数以及其他位于同一函数体下的子函数调用;
在调用函数时,MATLAB 用两个永久变量 nargin 和 nargout 分别记录调用该函数的输入实参和输出实参的个数。
定义完的函数保存在命名与函数名相同的 .m
文件,放置在 MATLAB 当前路径下。然后就和使用 MATLAB 的内建函数一样,直接在命令窗口或者程序代码中使用该函数就可以调用它了。
编写一个 m 文件自定义函数 max_min_value,来实现求出一个向量的最大值和最小值的功能。
% max_min_value.m 定义自定义函数 | |
function [max,min] = max_min_value(A) | |
max = maxx(A); | |
min = minn(A); | |
function mx = maxx(A) | |
A1=sort(A,"descend"); | |
mx=A1(1); | |
end | |
function mn = minn(A) | |
A2=sort(A); | |
mn=A2(1); | |
end | |
end |
% main.m 调用自定义函数 | |
clear; | |
clc; | |
X=1:20; | |
[max,min]=max_min_value(X); | |
disp([max,min]); |
输出结果:
20 1
# 匿名函数
匿名函数不存在程序文件中,数据类型是 function_handle
变量相关的函数。代替 “将函数编写为单独的 .m
文件”,并且效率与上一种方法相比更高。
适合写数学上的那种函数表达式。笔者的语言表达能力实在是差点意思 这里的‘函数’是与程序设计中的 ' 函数 ' 相对立的,如 这样的
基本格式:
f=@(形参1,形参2,……)函数表达式 |
@
为函数的 “句柄” ,作用相当于给函数起个别名(类似 C++
中的引用)。
使用匿名函数计算
f=@(x,y)x.^2+y.^2; | |
disp(f(2,3)); | |
x=1:5; | |
y=0.1:0.1:0.5; | |
disp(f(x,y)); |
运行结果:
13
1.0100 4.0400 9.0900 16.1600 25.2500
匿名函数可以进行复合,即一个匿名函数的函数体部分是另一个匿名函数。
如:
f=@(a,b) @(x) x^2+2x+1; |
适合写数学中的含参函数,并配合求解器等求解。