4

将此示例函数另存为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显示变量已加载到函数的本地工作区中。我什至可以在第 4 行设置断点test_func并输入alpha,我得到了正确的结果,但是一旦我使用调试器向前迈出一步,它就会再次失败:函数alpha正在屏蔽局部变量,我不明白为什么.

替换test_funcby的内容

p = load('test.mat');
p.alpha

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

对我来说,它看起来像一个错误(我使用的是 Matlab R2011a),但如果它是一个功能,你能解释一下并帮助我找到解决方法吗?

4

1 回答 1

3

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

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

另一件有帮助的事情是在调用加载之前初始化变量

function test_func
alpha = 0;
load('test.mat');
whos
alpha
于 2012-09-30T07:53:20.880 回答