0

我使用手册中的描述保存和加载 gui 数据

function readImage(filename, hObject, handles)
  handles.image.data = imageRGBNoEdge;
  guidata(hObject,handles);

function createHistogram(handles)
  imageRGB = handles.image.data;

它们都直接在另一个之后调用

readImage(imageFile,hObject,handles);
createHistogram(handles);

然而,在他的第二个函数中,handles.image 是未知的。

??? Reference to non-existent field 'image'.
Error in ==> ui_histogram>createHistogram at 252
imageRGB = handles.image.data;

但是,如果我第二次调用该函数,它是否已知?

4

2 回答 2

1

尽管有它的名字,但是句柄是一个结构而不是句柄类,因此在 readImage 中更改它不会将更改传播到调用函数。

您可以将 readImage 更改为

function handles = readImage(filename, hObject, handles)

并调用它

handles = readImage(imageFile,hObject,handles);

或添加对 guidata 的调用

handles = guidata(hObject);

就在您调用 createHistogram 之前。

于 2012-07-31T12:25:02.050 回答
0

我正在解决此时imageRGBNoEdge已经定义的假设。

通过简要查看guidata函数文档,看起来这可能是问题的一部分。当您尝试在其中加载数据时,createHistogram您需要使用以下内容:imageRGB = guidata(hObject)因为这就是告诉guidata您要获取哪些数据并且您已经将数据保存到该对象句柄(hObject

此外,我真的不能发表更多评论,因为看起来每个函数都缺少相当多的代码。希望这将帮助您朝着正确的方向前进!

于 2012-07-31T12:01:32.200 回答