似乎我的 MATLAB 名称与我的一个名为“annotation”的变量和内置的 MATLAB 函数“annotation”发生冲突。
在我的函数中,我正在加载一个包含变量注释的 .mat 文件,然后尝试将其用作另一个函数的参数。一个最小的工作示例如下所示:
function test()
filenames = { 'file1.mat', 'file2.mat', 'file3.mat' };
for i = 1:numel(filenames)
in_file = char(filenames{i});
out_file = strrep(in_file, '.mat', '_out.mat');
prepare(out_file); % do something with the out file
load(out_file); % contains one variable named "annotation"
which annotation % just to be sure
other_function(annotation);
end
end
function prepare(filename)
annotation = rand(25, 1);
save(filename);
end
function other_function(annotation)
whos % just a stub - see whether it has been called
end
现在,在我的函数准备中,我确保文件包含一个名为“annotation”的变量。当我在主函数的循环中加载它时,“which”命令告诉我它作为变量存在,但在调用 other_function 时,MATLAB 尝试调用函数“annotation”:
注释是一个变量。
???在 71 处使用 ==> 注释时出错
没有足够的输入参数
==> 14 点测试中的错误
other_function(annotation);
我很困惑,因为我在程序的几个部分中使用了变量名“annotation”,也作为函数调用中的参数。我能想象的唯一解释是 MATLAB 以某种方式预编译了我的代码——在“编译时”,变量“注释”是不可见的。但是,在运行时可以从“which”命令的输出中看到它。
任何帮助将不胜感激!提前谢谢了。
注意:我使用的是 MATLAB 7.12.0 (R2011a)。