第四章:MATLAB函数的定义和调用
本文将详细介绍如何在MATLAB中定义和调用函数,并配以具体案例和详细代码注释。我们将探讨函数定义、输入参数、返回值以及实际案例展示其使用。
1. 函数定义
在MATLAB中,函数定义由函数名、输入参数以及函数体组成。以下是一个简单的函数定义示例:
function result = add(a, b)
% 函数名: add
% 输入参数: a, b
% 输出结果: result
result = a + b;
end
上面的代码展示了一个名为 add
的函数,它接受两个输入参数 a
和 b
,并将它们相加后返回结果。函数体位于 function
关键字和 end
关键字之间。
2. 函数调用
调用函数时,只需使用函数名和适当的输入参数即可。以下是使用我们先前定义的 add
函数的示例代码:
x = 3;
y = 5;
z = add(x, y);
disp(z);
结果:
8
在这个示例中,我们使用变量 x
和 y
分别存储值 3 和 5。然后,我们调用函数 add
并传入这两个变量作为输入参数。函数返回的结果被赋值给变量 z
。最后,我们使用 disp
函数打印出 z
的值。
3. 函数的输入和输出
函数的输入参数可以是任意类型的数据,包括数字、向量、矩阵、字符串等。函数体执行特定的操作,并产生一个或多个输出结果。以下是一个示例代码,展示了接收矩阵作为输入参数并返回元素平均值的函数定义:
function avg = computeAverage(matrix)
% 函数名: computeAverage
% 输入参数: matrix
% 输出结果: avg
[rows, cols] = size(matrix);
total = sum(matrix(:));
avg = total / (rows * cols);
end
上述代码中的函数接受一个名为 matrix
的输入参数,该参数被假定为一个矩阵。首先,我们使用 size
函数得到矩阵的行数和列数。然后,我们使用 sum
函数计算出矩阵所有元素的总和,并将结果赋给变量 total
。最后,我们通过将总和除以矩阵的元素个数来计算出平均值,并将其赋给变量 avg
。
A = [1 2 3; 4 5 6; 7 8 9];
average = computeAverage(A);
disp(average);
结果:
5
在上面的示例中,我们创建了一个3x3的矩阵 A
。我们调用 computeAverage
函数,并将矩阵 A
作为输入参数传递给它。函数返回的平均值被赋给变量 average
,并使用 disp
函数打印出其值。
4. 匿名函数
在MATLAB中,还可以创建匿名函数,这是一种不需要显式定义函数名称的函数。以下是一个简单的匿名函数示例:
square = @(x) x * x;
result = square(4);
disp(result);
结果:
16
在上述示例中,我们使用 @
符号定义了一个匿名函数。此函数接受一个输入参数 x
,并返回 x
的平方作为输出结果。我们使用输入参数 4
调用该匿名函数,并将结果赋给变量 result
。
5. 输入参数检查
在函数定义中,可以添加语句来检查输入参数的有效性,以确保函数在接收到正确类型和范围的输入时才执行相应的操作。以下是带有输入参数检查的函数定义示例代码。
function result = divide(a, b)
% 函数名: divide
% 输入参数: a, b
% 输出结果: result
% 检查输入参数是否为数字
if ~isnumeric(a) || ~isnumeric(b)
error("输入参数必须为数字");
end
% 检查除数是否为0
if b == 0
error("除数不能为0");
end
% 执行除法操作
result = a / b;
end
上面的代码定义了一个名为 divide
的函数,它接受两个输入参数 a
和 b
。在函数体中,我们使用 isnumeric
函数检查输入参数是否为数字类型。如果不是数字,则会抛出一个错误信息。
x = 10;
y = 2;
z = divide(x, y);
disp(z);
结果:
5
在上述示例中,我们将值10和2分配给变量 x
和 y
。然后,我们调用 divide
函数,并将这两个变量作为输入参数传递给它。函数返回的结果被赋值给变量 z
,并使用 disp
函数打印出其值。由于除数不为0,函数成功执行了除法操作。