2016-06-13 15 views
0

私はguiでプログラムを書いています。私はGUIのオブジェクトのコールバックなどの自動作成された関数を除いて、私はこのプログラムのどこでもそれらを使用するユーザー定義関数を作成したい。私は以下のようにメッシュ関数を作成しました。MATLABのユーザー定義関数で現在の軸を設定する方法はありますか?

function meshing(p1, p2, p3, p4, p5, p6, p7, p8) 

pmb = [((p1(1) + p5(1))/2) ((p1(2) + p4(2))/2) p1(3) ]; 
pmt = [((p1(1) + p5(1))/2) ((p1(2) + p4(2))/2) p2(3) ]; 

p23 = (p2 + p3)/2; 

a = get(gcf); 
axes(handles.axes3d); 
scatter3(pmt(1),pmt(2),pmt(3)) 

が、私はそれを実行したときにUicontrolのコールバック

未定義の変数 "ハンドル" またはクラス "handles.axes3d" を評価しながら、これ以下のエラーが

エラーを示しています。

SSF>メッシング(897行目)軸(handles.axes3d)でエラーが発生しました。

私のGUIにはaxes3dがあります。何ができますか

+1

以内にそれを使用することができます。 'meshing'をコールバックと定義する場所を表示できますか? – Suever

答えて

1

主な問題は、handlesが入力として渡されないため、関数内で定義されていないことです。内部的に定義されたすべてのコールバックを見ると、入力としてhandlesがあります。

このGUIをどのように呼び出すかについての正確なコードが表示されていなければ、GUIのguidataに関数内からのhandles変数へのアクセス権が与えられます。

handles = guidata(gcf); 

次に、あなたはあなたが `handles`という名前の入力引数を持っていないあなたの関数

scatter3(pmt(1), pmt(2), pmt(3), 'Parent', handles.axes3d) 
関連する問題