1

ここに私の問題があります.GUIと関数(func1)が私の図の.mファイルの外側に書かれています。また、GUI にボタンがあり、launch func1 を押すと、この関数は非常に CPU を集中的に使用し、finsh の前に多くの時間がかかる可能性があります。静的テキストなど)。

私が最初に考えたのは、func1 に、GUI が読み取れるテキスト ファイルに情報を書き込むようにすることでしたが、そのためには、GUI 側である種のマルチスレッド プログラミングが必要であり、matlab にはそのようなものはないように見えます。

2 番目に、GUI に関連する .m ファイル内の update(message) 関数を呼び出すように func1 を作成しようとしましたが、update はサブ関数であり、外部のサブ関数を呼び出す方法がないように思われるため、機能しませんでした。それを含むファイル。

誰かがそれを手伝ってくれませんか?私の悪い英語でごめんなさい。

4

1 に答える 1

2

UIを更新するオブジェクトを渡し、参照のように操作します。

classdef WindowUpdater < handle
    properties(Access=private)
        textBox;
    end

    methods(Access=public)

        function this = WindowUpdater(textBox)
            this.textBox = textBox;
        end

        function Update(this,st)
            set(this.textBox,'String',st);
            drawnow();
        end        
    end

end

テキストuicontrolで初期化します

h = uicontrol('Style','text');
wu = WindowUpdater( h);

集中的な機能を次のように記述します。

function foo(arg1,arg2,wu)
     %Do some stuff
     wu.Update('Hello world!');
     %Do some more stuff
     wu.Update('Hello world has finished!');
end

この方法には、SWの大きな利点があります。

  • コードロジックはGUIの更新から分離されています。WindowUpdaterを、コンソール行に書き込み、何もしないなどの別のMyNewUpdaterに置き換えることができます。
于 2011-12-25T12:13:03.177 に答える