为什么在函数内部使用load后函数会屏蔽变量?

时间:2012-09-30 05:10:09

标签: matlab workspace masking

将此示例函数另存为test_func.m

function test_func
load test.mat
whos
alpha

并运行此示例脚本:

alpha = 3;
save test.mat
test_func

以下是我得到的输出:

  Name       Size            Bytes  Class     Attributes

  alpha      1x1                 8  double              

??? Error using ==> alpha at 40
Not enough input arguments.

Error in ==> test_func at 4
alpha

whos的输出显示变量已加载到函数的本地工作空间中。我甚至可以在test_func的第4行放置一个断点并输入alpha并得到正确的结果,但是一旦我使用调试器向前迈出一步,它就会再次失败:函数{{ 1}}掩盖局部变量,我不明白为什么。

用{/ 1>替换alpha的内容

test_func

工作正常,但这不是我想要做的。我想直接在函数的本地工作空间内加载变量。

对我而言,它看起来像一个错误(我正在使用Matlab R2011a),但是如果它是功能你可以解释它并帮我找到解决方法吗?

1 个答案:

答案 0 :(得分:3)

嘿,你可能是对的,这是一个错误。看起来很奇怪,因为以下工作

function test_func
load('test.mat','alpha');
whos
alpha

另一个有用的方法是在调用加载

之前初始化变量
function test_func
alpha = 0;
load('test.mat');
whos
alpha