matlab语法+包奇怪的错误

时间:2012-12-12 21:18:54

标签: matlab

我对matlab感到有点困惑,因为我找不到更好的标题。

我有以下结构

testit.m
+package
   testfile.m

testit.m包含:

import package.testfile

testfile 

testfile.m包含:

view = struct();
v = uiextras.Grid( 'Spacing', 5 );
view.view = v;
view.axes = axes( 'Parent', view.view ); 

如果我现在进入基本目录并输入testit,我会收到以下错误:

??? Error using ==> axes
Conversion to double from unknown is not possible.

Error in ==> testfile at 4
view.axes = axes( 'Parent', view.view );
Error in ==> testit at 3
testfile 

到目前为止一切顺利。但是,如果我没有将testfile.m放入包中并通过testfile.m直接调用它,一切正常。如果我用

替换testfile.m的最后一行
view.axes = axes( 'Parent', v ); 

这样我不使用struct来访问Grid,我得到错误:

??? No method 'onChildAddedEvent' with matching signature found for class 'uiextras.Grid'.

Error in ==> Container>@(varargin)obj.onChildAddedEvent(varargin{:}) at 95
            obj.Listeners{end+1,1} = handle.listener( containerObj, 'ObjectChildAdded', @obj.onChildAddedEvent );

Warning: Error occurred while evaluating listener callback. 
> In testfile at 4
  In testit at 3

uiextras来自http://www.mathworks.com/matlabcentral/fileexchange/27758

为什么我把文件放入包中会有所不同?为什么它使用v或view.view会产生影响?我只是误解了matlab语法吗?

1 个答案:

答案 0 :(得分:1)

这本身并不是一个答案,但对于像我这样在这篇文章中结束的其他人可能会有所帮助。 Matlab文件交换中的某些文件本身包含GUI布局工具箱(+ uiextras)的版本和/或部分。除了直接从文件交换中自己的条目下载的GUI布局工具箱(+ uiextras)的“真实”实例之外,如果在路径中的其他一个文件交换下载中有一个+ uiextras实例,则可能会遇到问题

当使用axis / buttons / uitables / etc在+ uiextras中填充标准布局时,我在Ferio上面遇到了这样的错误:

Error in ==> Container>@(varargin)obj.onChildAddedEvent(varargin{:}) at 95
        obj.Listeners{end+1,1} = handle.listener( containerObj, 'ObjectChildAdded', @obj.onChildAddedEvent );

原来我的路径中有另外一个+ uiextras实例,我之前已经测试过随机文件交换下载,但不再使用了。我删除了其他文件交换下载的整个文件夹(回想起来,从路径中删除可能已经足够了),现在使用GUI Layout Toolbox工作正常。

您可以按照错误链接查看这是否与您遇到的问题相同。用uiextras做一些让你错误的东西。单击错误行号的链接(本例中为第95行),它将打开发生错误的文件。对我来说,该文件位于随机的其他文件交换下载内的DIFFERENT + uiextras文件夹中。我删除了那个文件夹,这解决了我的问题。