MATLAB中函数的详细使用
一、函数基本知识
function语法: function [,...,
] = myfun(
,...,
), 其中[
,...,
]为输出量,myfun为函数名,(
,...,
)为函数输入量。
有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
注意事项:
注意事项一:函数的保存位置与命名规则
1、函数文件 (Function File)
规则: 只包含函数定义的函数文件中。文件的名称应与文件中其函数的名称一致。
创建一个新的 .m
文件,这个文件只包含一个函数的定义。这个文件的名字必须和函数的名字完全相同。
示例: 定义了一个函数:function myFunction(input) ... end
那么必须将这个函数保存为一个名为 myFunction.m
的文件。
当在命令行或其他脚本中调用 myFunction
时,MATLAB 会自动去寻找 myFunction.m
文件来执行。
代码演示1:简单加法函数
定义函数(保存为 addNumbers.m
):
function sumResult = addNumbers(a, b) % ADDNUMBERS 计算两数之和
sumResult = a + b;
end
调用函数(在命令行或脚本中):
result = addNumbers(3, 5); % 返回 8
disp(result);
代码演示2:多输入输出函数
定义函数(保存为 circleCalc.m
):
function [area, circumference] = circleCalc(radius) % CIRCLECALC 计算圆的面积和周长
area = pi * radius^2;
circumference = 2 * pi * radius;
end
在其他.m的脚本文件中调用函数:
[a, c] = circleCalc(2); % 输出结果: a = 12.566, c = 12.566
2、脚本文件 (Script File)
规则: 包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。脚本文件不能与文件中的函数具有相同的名称。
示例:正确的脚本文件结构 (myScript.m
)
% ============ 主脚本代码部分 ============
% 这里是主要的执行逻辑% 计算圆的面积和周长
radius = 5;
[area, circ] = calculateCircle(radius); % 调用局部函数fprintf('半径: %.2f\n', radius);
fprintf('面积: %.2f\n', area);
fprintf('周长: %.2f\n', circ);% 可以继续添加更多脚本代码..
........
% ============ 局部函数部分 (必须放在末尾) ============
function [area, circumference] = calculateCircle(r)
% CALCULATECIRCLE 计算圆的几何属性
area = pi * r^2;
circumference = 2 * pi * r;
end% 可以添加更多局部函数...
function volume = calculateSphere(r)
% CALCULATESPHERE 计算球体体积
volume = (4/3) * pi * r^3;
end
关键解释:
文件命名:脚本保存为 myScript.m
(而非 calculateCircle.m
)
执行顺序:MATLAB 从上到下执行,先运行主脚本,再定义函数
函数调用:主脚本中可以调用 calculateCircle
和 calculateSphere
注意事项二:多函数与 end
关键字的使用
规则: “文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用 end
关键字来表示文件中每个函数的末尾。
局部函数 (Local Functions): 并列放在主函数或主脚本后面的多个函数。•
嵌套函数 (Nested Functions): 定义在另一个函数内部的函数。
示例 (函数文件中的多个局部函数):
% 保存为 MyMath.m脚本文件
function mainOutput = MyMath(input)
output1 = addFive(input);
mainOutput = squareNumber(output1);
end% 局部函数 1
function out = addFive(in)
out = in + 5;
end % 此处建议使用 end,如果是嵌套函数或脚本中则必须使用% 局部函数 2
function out = squareNumber(in)
out = in * in;
end % 此处建议使用 end,如果是嵌套函数或脚本中则必须使用
二、matlab创建一个子函数,在主函数中调用该子函数
1.子函数必须与主函数位于同一个 .m 文件中,且定义在主函数之后。子函数的作用域仅限于该文件,外部无法直接调用。
步骤 1:创建主函数与子函数(同一 .m 文件)
% 主函数(文件保存为 mainFunction.m)
function [sum_result, product_result] = mainFunction(a, b)
% 调用子函数 calculateSum
sum_result = calculateSum(a, b);
% 调用子函数 calculateProduct
product_result = calculateProduct(a, b);
end% 子函数 1:计算两数之和
function sum_val = calculateSum(x, y)
sum_val = x + y;
end% 子函数 2:计算两数之积
function product_val = calculateProduct(x, y)
product_val = x * y;
end
步骤 2:调用主函数
在命令行或脚本中直接调用主函数:
% 调用示例
[sum_result, product_result] = mainFunction(3, 4);
disp(['和: ', num2str(sum_result)]); % 输出 7
disp(['积: ', num2str(product_result)]); % 输出 12
拓展:上面代码放在一个脚本中
将文件重命名(例如改为 myCalculator.m
),确保文件名不与内部的任何函数名相同。
% myCalculator.m (这是一个脚本文件)
% 主程序脚本代码
a = 3;
b = 4;
[sum_result, product_result] = mainFunction(a, b);
disp(['和: ', num2str(sum_result)]); % 输出 7
disp(['积: ', num2str(product_result)]); % 输出 12% --- 局部函数定义必须放在脚本代码的后面 ---
function [sum_result, product_result] = mainFunction(a, b)
% 调用子函数 calculateSum
sum_result = calculateSum(a, b);% 调用子函数 calculateProduct
product_result = calculateProduct(a, b);
end% 子函数 1:计算两数之和
function sum_val = calculateSum(x, y)
sum_val = x + y;
end% 子函数 2:计算两数之积
function product_val = calculateProduct(x, y)
product_val = x * y;
end
2.多文件调用(非子函数)
若需跨文件调用函数,需将函数保存为独立 .m 文件,并确保文件在 MATLAB 搜索路径中:
步骤1.创建独立函数文件
% 文件:calculateSum.m
function sum_val = calculateSum(x, y)
sum_val = x + y;
end
步骤2.主文件中调用
% 文件:mainScript.m
a = 3; b = 4;
result = calculateSum(a, b); % 直接调用外部函数%这里可以调用前面的子函数
[sum_result, product_result] = mainFunction(3, 4);
disp(['和: ', num2str(sum_result)]); % 输出 7
disp(['积: ', num2str(product_result)]); % 输出 12