在函数内加载变量时出现意外结果
如果你有一个函数从mat文件加载数据,然后发现MATLAB®如果没有返回预期的结果,请检查mat文件中的变量是否与MATLAB函数共享相同的名称。与函数名冲突的常用变量名包括我
,j
,模式
,字符
,大小
,路径
.
之所以会出现这些意外的结果,是因为在执行函数时,MATLAB会在运行函数之前预处理函数中的所有代码。然而,调用负载
都没有经过预处理,这意味着MATLAB不知道mat文件中的变量。因此,与MATLAB函数同名的变量被预处理为MATLAB函数,导致了意外的结果。这与脚本不同,MATLAB对脚本进行预处理并逐行执行,类似于命令窗口。
例如,考虑一个带有变量的mat文件高度
,宽度
,长度
.如果将这些变量加载到诸如findVolume
, MATLAB对引用进行解释长度
作为对MATLAB的调用长度
函数,并返回一个错误。
函数vol = findVolume(myfile) load(myfile);Vol =高*宽*长;结束
输入参数不足。
为了避免混淆,在定义函数时,选择以下一种(或多种)方法:
将变量加载到结构数组中。例如:
函数vol = findVolume(myfile) dims = load(myfile);卷=变暗。高度* dims.width * dims.length;结束
类的调用中显式包含变量的名称
负载
函数。例如:函数vol = findVolume(myfile) load(myfile,“高度”,“宽度”,“长度”) vol =高*宽*长;结束
在调用函数之前初始化函数内的变量
负载
.若要初始化变量,请将其赋值给空矩阵或空字符向量。例如:函数vol = findVolume(myfile) height = [];宽度= [];长度= [];负载(myfile);Vol =高*宽*长;
要确定特定变量名是否与MATLAB函数相关联,请使用存在
函数。返回值5确定该名称是一个内置的MATLAB函数。