主要内容

在函数中加载变量时的意外结果

如果你有一个函数从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);Vol =暗。高度* dims.width * dims.length;结束
  • 类的调用中显式包括变量名负载函数。例如:

    函数vol = findVolume(myfile) load(myfile)“高度”“宽度”“长度”) vol =高*宽*长;结束
  • 在调用函数之前初始化函数中的变量负载.若要初始化变量,请将其赋值给空矩阵或空字符向量。例如:

    函数vol = findVolume(myfile) height = [];宽度= [];长度= [];负载(myfile);Vol =高*宽*长;

若要确定特定变量名是否与MATLAB函数相关联,请使用存在函数。返回值5确定该名称是内置的MATLAB函数。

另请参阅

相关的话题