主要内容

在函数内加载变量时出现意外结果

如果你有一个函数从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函数。

另请参阅

相关的话题

Baidu
map