自定义函数:能够完成相对独立功能的代码封装城的模块。

# m 文件自定义函数

# MATLAB 函数的基本结构

函数的定义:

function[输出形参表:形参1,形参2,……] = 函数名(输入形参表:形参1,形参2……)
    函数体
end

这里的 end 关键字可以省略

函数的调用:

[输出实参表]= 函数名 (输入实参表)

函数中遇到 return 关键字时,将退出函数体,函数调用结束。

函数体里也可以定义一个或几个函数,称为子函数。

注意:子函数只能存在于主函数内,不独立存在;子函数在主函数的位置可以任意,不影响使用;子函数只能被主函数以及其他位于同一函数体下的子函数调用;

在调用函数时,MATLAB 用两个永久变量 nargin 和 nargout 分别记录调用该函数的输入实参和输出实参的个数。


定义完的函数保存在命名与函数名相同的 .m 文件,放置在 MATLAB 当前路径下。然后就和使用 MATLAB 的内建函数一样,直接在命令窗口或者程序代码中使用该函数就可以调用它了。

e.g.e.g.
编写一个 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(x)=log xf(x)=log \ x 这样的

基本格式:

f=@(形参1,形参2,……)函数表达式

@ 为函数的 “句柄” ,作用相当于给函数起个别名(类似 C++ 中的引用)。

e.g.e.g.
使用匿名函数计算 x2+y2x^2 + y^2

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;

适合写数学中的含参函数,并配合求解器等求解。

更新于 阅读次数