0

特定のシミュレーションを実行するために、MATLABGUIを作成しました。

このGUIには、シミュレーションを開始するための1つのボタンがあります。このボタンコールバック関数は、計算を実行します。これはもちろん、結果を含むデータセットになります。

さらに、インターフェイスには、シミュレーション結果のさまざまな側面を表示するために、プロット領域と、さまざまなグラフを切り替えるための選択ボックスがあります。したがって、結果はGUIの他の機能でも利用できる必要があります。コールバック関数には出力がないため、これは問題です。

私が考えることができる2つの解決策は、データセットをMATファイルに保存するか、グローバル変数を使用することです。最初の解決策は私には本当に正しくないように思われ、さらに、可能であればグローバルな変動を回避する必要があることを学びました。では、ここでの最善の解決策は何ですか?

4

2 に答える 2

1

コールバックを定義するハンドル クラスから継承するユーザー定義クラスを作成すると、ハンドル クラス インスタンスの「内部」からコールバックを実行できます。

classdef mySimulation < handle
    properties
        hFigure
        mySimResults
    end
    methods
        function this = mySimulation(varargin)
            hFigure = figure; 
            ...
            <build figure components>
            ...
        end
        function myButtonCallback(this, src, evnt)
            this.mySimResults = runMySimulation;
            ...
            <update plot etc>
        end
        function mySelectBoxCallback(this, src, evnt)
            ...
            <update plots>
        end
    end
end
于 2012-11-30T15:26:52.853 に答える
0

MATLABは、このための特定の関数を提供します。1つの変数を格納できる関数guidataがあります。これは、たとえば、GUIハンドルを渡すために使用できます。さらに、関数setappdataとgetappdataがあります。これらの関数は、関数間でデータを転送し、変数をFigureハンドルに結合する方法です。

さまざまな方法の詳細については、こちらをご覧ください

これは、グローバル変数を使用するよりも意味的に正しいと思われます。しかし、私はまだその理由に興味があります。コメントはありますか?

于 2012-11-30T11:20:48.497 に答える