MATLAB 2013a中的输出错误过多

MATLAB 2013a中的输出错误过多,matlab,Matlab,在Matlab2013a中执行Matlab2012b中未失败的代码时,我遇到了一个标识符为“MATLAB:TooManyOutputs”的错误 产生此错误的行是 handles.Project = project; 其中,project是一个结构(大小1x1),而handles是一个带有我创建的GUI句柄的结构项目是结构句柄的一个字段,在上行之前不存在该字段 我觉得非常奇怪的是,如果我在前面显示的行中放置一个断点,我会对其进行注释,当执行因该断点而暂停时,我会在MATLAB命令行handles

在Matlab2013a中执行Matlab2012b中未失败的代码时,我遇到了一个标识符为“MATLAB:TooManyOutputs”的错误

产生此错误的行是

handles.Project = project;
其中,
project
是一个结构(大小1x1),而
handles
是一个带有我创建的GUI句柄的结构<代码>项目是结构
句柄
的一个字段,在上行之前不存在该字段

我觉得非常奇怪的是,如果我在前面显示的行中放置一个断点,我会对其进行注释,当执行因该断点而暂停时,我会在MATLAB命令行
handles.Project=Project中手动写入没有错误

错误可能在哪里?怎么了

多谢各位

编辑:还有一个无法解释的问题。我发现这行代码不会使我在Matlab2013a for UNIX中的程序崩溃,但在Matlab2013a for Windows中会崩溃

EDIT2:我发现Matlab2013a中有一个新函数用于Windows,名为
project
,所以我想MATLAB认为我调用的是它,而不是我真正想要的变量。问题是我无法更改变量的名称(因为它存储在MAT文件中,该文件是由另一个程序创建的,我无权访问该程序的代码)。那么,有没有办法说:“MATLAB,我希望您使用这个变量而不是新函数”

如果您使用输出参数调用,MAT文件的内容将作为结构返回,每个变量一个字段。这样可以避免污染工作空间,特别是当MAT文件中存储了许多变量时,并避免可能的名称冲突

D = load('some_file.mat');
handles.Project = D.project;

你能给那一行设置一个断点,当它停在那里时键入哪个项目吗?输出是什么?必须有一个名为project的东西覆盖结构的可见性。@Daniel
哪个project
返回:
project是一个变量。
如果我在MATLAB命令行中写入
project
,它会显示它是一个包含两个字段的结构,这是正确的。@Daniel你说得对。请看我的EDIT2注释。显示从MAT文件加载数据的代码部分。您可以将数据加载为
D=load([…])
,然后访问MAT文件中包含的各个变量:
D.project
(无歧义)。唯一一个我还不了解的细节是,为什么MATLAB在执行我的程序时不能将
project
识别为变量,但当我在命令行中手动编写
handles.project=project
时却能识别。这是个好问题。如果我可以访问您的代码,我可能会回答您(看到代码并能够与之交互,很难调试某些东西)。。。我想这是因为在同一个范围内,函数调用和变量都使用了相同的名称,但我不能确定。这也许可以解释为什么命令行和执行函数之间会出现不同的行为。事实是,我从来都不喜欢默认情况下
load
函数的工作方式(在没有输出参数的情况下调用),它会在当前工作区中无中生有地引入变量。。这使得代码很难阅读,尤其是在函数内部调用时。而使用struct语法可以明确变量的来源。