MATLAB编程-简介
M 文件(M-files)
在 MATLAB 中,M 文件有两种类型:
-
脚本(Scripts)
-
函数(Functions)
脚本(Scripts)
脚本是在当前工作空间(workspace)中运行的 M 文件。
当你从命令行(基本工作空间)调用脚本时,它会使用并修改当前工作空间中的变量。
⚠️ 注意:当脚本在循环中被调用,而循环变量命名不规范(如多个循环都使用 i
、j
、k
),就可能会引发混乱和难以调试的错误。
函数(Functions)
函数有自己的独立工作空间,与主程序(调用者)隔离。这意味着:
-
函数所需的所有变量必须通过参数传入或在函数内定义;
-
函数结束时,其内部变量不会影响外部工作区;
-
只有函数的输出参数会被返回。
因此,在函数中可以放心使用 i
、j
等变量名,而不会影响主程序。
M 文件中的通用命令
只要变量在当前工作空间中存在,任何在命令行有效的命令在 M 文件中同样适用。
利用函数封装代码,可以自动化重复任务,也更易于维护和修改。
函数语法与要求
一个最基本的自定义函数语法如下:
function [output1, output2, ...] = function_name(input1, input2)
% 函数语句
end
-
function_name
应与文件名function_name.m
保持一致; -
函数中必须对所有输出变量进行赋值;
-
通常会在函数开头初始化输出变量(如设置为
0
、-1
或[]
)以防异常退出; -
函数可以用
return
提前返回(非必须)。
路径(Path)
为了能调用函数,该函数的 .m
文件必须在 MATLAB 的当前路径中。
路径顺序:
-
当前工作目录(
pwd
) -
默认路径(可用
addpath
添加)
MATLAB 会按路径顺序查找函数名,找到第一个匹配即停止搜索。
函数中的 nargin
与 nargout
-
nargin
:获取传入函数的输入参数数量; -
nargout
:获取函数调用方请求的输出参数数量;
配合 nargchk(min, max, nargin)
可以检查参数数量是否在合法范围内。
这在设计支持可选参数或不同返回数量的函数时非常有用。
varargin
与 varargout
-
varargin
:用于传递可变数量的输入参数,为一个元胞数组; -
varargout
:用于支持可变数量的输出参数。
示例函数:
function [s, varargout] = mysize(x)
nout = max(nargout, 1) - 1;
s = size(x);
for k = 1:nout
varargout{k} = s(k);
end
end
调用示例:
[s, rows, cols] = mysize(rand(4,5));
% s = [4 5], rows = 4, cols = 5
编程规范与建议
-
使用分号
;
结尾可避免输出中间变量,提高性能; -
添加注释
%%
和%
可提升代码可读性,便于调试和协作:
syms x y z; % 定义符号变量 x, y, z
w = [x y z];
e = [1 2 3];
t = jacobian(e, w); % 计算雅可比矩阵
-
注释中可注明作者和日期:
% 作者:某人
% 日期:yyyy-mm-dd
嵌套函数(Nested Functions)
待补充:关于嵌套函数的定义、优缺点与使用场景
参考资料与外部链接
内容参考自 ControlTheoryPro.com 关于 M 文件、脚本与函数的文章。
如需我补充“嵌套函数”相关的翻译和示例,请告诉我。