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);

ただし、2 番目の関数の handles.image は不明です。

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

しかし、関数をもう一度呼び出すと、それはわかっていますか?

4

2 に答える 2

1

その名前にもかかわらず、handles はハンドル クラスではなく構造体であるため、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 に答える