switch-case ステートメント内の while ループに問題があり、コールバック関数および「 drawow 」と一緒に使用されます。私のコードでは、switch-case のケースは uicontrol のプッシュボタンによって決定されますが、case ステートメントには、「windowbuttondown/up/motionfcn」を使用してマウスの動きを追跡するための追加のコールバック関数が含まれます。ただし、case ステートメントの while ループ内で複数のプロットを描画するため、'drawnow' を使用すると、プログラムを実行すると次のエラーが発生します。
160 行目のエラー ==> drawow ??? uicontrol コールバックの評価中に中断する
case ステートメント内のコードは、独立して実行してもエラーは発生しませんが、残りのコードと統合すると何らかの問題が発生します。これを以下に添付します。どんな助けでも大歓迎です。どうもありがとう!
function programme(selection)
if nargin == 0
selection=0
end
switch selection
case 0 %start GUI and uicontrols to set up the cases i.e programme(1), programme(2) etc
uicontrol('style','pushbutton',...
'string','First', ...
'position',[50 700 50 20], ...
'callback','programme(1);');
uicontrol('style','pushbutton',...
'string','Second', ...
'position',[150 700 50 20], ...
'callback','programme(2);');
case 1
%mouse track:
set(gcf,'windowbuttondownfcn','mousedown=1;');
set(gcf,'windowbuttonupfcn','mouseup=1;');
set(gcf,'windowbuttonmotionfcn','mousemotion=1;');
%to terminate the while loop, set up stopit=1 on one of uicontrol buttons:
uicontrol('style','pushbutton',...
'string','First', ...
'position',[50 700 50 20], ...
'callback','stopit=1;');
stopit=0;
while (stopit==0)
if mousedown==1
statements
if mouseup ==1
statements (plots)
mouseup=0;
mousedown=0;
mousedown=0;
end
end
drawnow
end
case 2
statements
otherwise
statements
終わり