これは基本的な質問ですが、私は苦労しています。
基本的に、GUI のポップアップ メニューの選択肢にコールバック関数を割り当てています。コードは次のとおりです。
uicontrol(mainfigure, 'Style', 'popup',...
'String', 'A|B|C',...
'Position',[850 190 200 30],...
'Callback', @blockset);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [block] = blockset(hObj,evnt) %#ok<INUSD>
blockval = get(hObj,'Value');
if blockval == 1
block = 'A';
elseif blockval == 2
block = 'B';
elseif blockval == 3
block = 'C';
end
end
ご覧のとおり、ポップアップ メニューのさまざまな選択肢に文字列値を割り当てているだけです。これらの文字列を、スクリプトの後半で別の関数への入力値として使用したいと考えています (uicontrol コールバックにも埋め込まれています)。
uicontrol(mainscreen, 'Style', 'pushbutton',...
'Position',[855 300 150 50],...
'String', 'START',...
'FontSize',10,'FontWeight','bold',...
'BackgroundColor', [.9 .9 .9],...
'CallBack', {@START_Callback, block});
コードはそのままでは機能しません。しかし、uicontrol コールバックの出力を定義する方法がわかりません。ブロックセット関数の出力として "block" を既に定義していますが、START_Callback にそれを入力として認識させるにはどうすればよいですか? 試行するたびに、「ブロック」が未定義の関数または変数であることがわかります。
関数からの出力を認識させるために、コードの「 'Callback', @blockset」行で何かする必要がありますか?
編集:大まかなインターネット検索では、おそらく setappdata/getappdata のようなもの、または別の回避策を使用する必要があることが示されています。ただし、それらに関するドキュメントを完全には理解していません。この状況でそれらをどのように使用しますか?