1

Matlab でプログラムを使用して最初の GUI を作成しています。GUI の視覚的な側面を構築し、現在 Callback 関数を作成中です。コールバック関数を作成するとき、それに 2 つのハンドルを渡す必要がありますが、何らかの理由でハンドルの 1 つだけが関数に渡されます。これは非常に基本的な質問だと確信していますが、これを乗り越えるのに本当に苦労しています。これが機能しない理由をドキュメントで見つけることができません

コールバックはボタン用で、ユーザーが入力した 2 つのパラメーターを受け取り、これらの数値を使用して伝達関数を作成します。2 つのパラメーターは、ハンドル orderEdit と timeConstEdit を使用して、編集可能なテキスト ボックスに入力されます。必要な文字列を抽出して、数値データ形式に変換できます。コードは次のとおりです。

まず、ボタン rtdButton にコールバック フラグを設定します。

set( rtdButton, 'Callback', @rtdPlot );

コールバック関数の最初の 2 行は次のとおりです (これらの値を取得できれば、残りの関数は機能するはずです)。

function rtdPlot(orderEdit,timeConstEdit)
    n = str2num(get( orderEdit, 'String' ));
    tau = str2num(get( timeConstEdit, 'String' ));

ただし、エラーが発生します

??? Error using ==> str2num at 33
Requires string or character array input.

Error in ==> mixingModel>rtdPlot at 148
         tau = str2num(get( timeConstEdit, 'String' ));

??? Error while evaluating uicontrol Callback

これを行う方法についての助けは大歓迎です

編集:ビーの投稿に基づいて、正しいコードは次のとおりです。

set( rtdButton, 'Callback', {@rtdPlot,orderEdit, timeConstEdit} );

    function rtdPlot(src,eventdata,arg1,arg2)
        n = str2num(get( orderEdit, 'String' ));
        tau = str2num(get( timeConstEdit, 'String' ));

乾杯ジョン

4

3 に答える 3