コールバック関数を実行するいくつかの GUI アイテムを含むグラフィックス ウィンドウのコードを書いています。現在、テキスト ボックスとスライダー コントロールがあり、テキスト ボックスの値を変更すると、表示されるデータが変更されるだけでなく、その値に合わせてスライダーの位置も更新されるように設定しています。私が直面している問題は、varargin
引数 (グラフィックス ウィンドウを作成するときにメイン関数に入力されたもの) が親cell
変数に囲まれないようにすることです。トップレベルvarargin
に値とパラメーターのペアが含まれている場合varargin
、cell
次元は 1x2 です。それはいいです。通常、これらすべての引数を次のように内部関数呼び出しに渡すことができます。
function topfunc(varargin)
%code
do_something(varargin{:})
そして、関数dosomething
は引数の正しいリストを認識します。しかし、次のように、varargins をcallback
定義に渡すと、
txtui = uicontrol(hf,'Style','edit','string',fristframe,'backgroundcolor','y',...
'position',[10 100 50 20],'Tag','Scaler','UserData',lsatframe,...
'Callback',{@doslide,adcname,mode,goodframes,{varargin{:}} } );
そして、関数 doslide
はプロット更新関数を呼び出しますdordplot
function doslide(theui,event,fileName,mode, goodframes,varargin)
% code snipped...
dordplot(slidinfo,event,fileName,mode,goodframes,varargin{:});
end
内部はdoslide
、varargin
予想される 1x2 セルを含む 1x1 セルです。
varargin
の内容が実際に使用されている最終関数に、次の行でクラッジ修正を入れました
varargin = varargin{:};
varargin
しかし、そもそもセル内にラップされるのは間違っているようです。
修正はありますか、それともコールバック関数呼び出しを間違って定義しましたか?