我对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语法吗?
答案 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文件夹中。我删除了那个文件夹,这解决了我的问题。