質問: guide で作成した複数の gui 間でデータを受け渡すには、どのようにすればよいですか? 複数の gui を作成しています。それら gui 間でデータ(変数)を受け渡したり、共有したりする方法を教えてください。
回答: 次の4通りの方法について説明します。 1. 関数の入力引数を使用する方法 2. グローバルワークスペースを使用する方法 3. ベースワークスペースを使用する方法 4. 別gui上のオブジェクトにアクセスする方法 まず、1~3の方法について説明します。 添付の zip ファイルを解凍し、サンプルプログラムmainfig.m、mainfig.fig、subfig.m、subfig.fig をご使用ください。2つのmatlabファイル中の「方法1」「方法2」「方法3」と記述された部分のいずれかをコメントアウトして次の手順で実行してください。 サンプルファイルは、ページ下部よりダウンロードすることが可能です。 (注意)ファイルのダウンロードはダウンロード対象のリンクを右クリックし、「対象をファイルに保存を選択して行ってください。 【実行手順】 (1)mainfig.mを実行します。 (2)エディットテキストに数値を入力し、プッシュボタンをクリックします。 (3)表示されたgui上のプッシュボタンをクリックすると、データ1とデータ2を加算した結果が表示されます。 【解説】 *1. 関数の入力引数を使用する方法(方法1)* mainfig.m上から入力引数付きでsubfig.mを呼び出し、subfig.mのopeningfcnルーチンでvarargin関数によりデータを受け取る方法です。 <関数の入力引数によるデータ受け渡しイメージ> <> *2. グローバルワークスペースを使用する方法(方法2)* global関数によりグローバルワークスペースに定義した値を、subfig.mのローカルワークスペース上から参照して使用する方法になります。 <グローバルワークスペースを介したデータ参照イメージ> <> *3. ベースワークスペースを使用する方法(方法3)* mainfig.mのローカルワークスペースに定義された値を、assignin関数により一旦ベースワークスペースに定義し、このベースワークスペースに定義された値を、evalin関数によりsubfig.mのローカルワークスペースに定義して利用する方法です。 <ベースワークスペースを介したデータ定義イメージ> <> 以下に参考情報が記載されています。 ● matlab ヘルプドキュメント:変数 http://www.mathworks.co.jp/jp/help/matlab/variables.html 次に、4の方法について説明します。 添付の zip ファイルを解凍し、サンプルプログラムmainfig2.m、mainfig2.fig、subfig2.m、subfig2.fig)を使用し、次の手順で実行してください。 【実行手順】 (1)mainfig2.mを実行します。 (2)エディットテキストに数値を入力し、プッシュボタンをクリックします。 (3)別のgui上に、データ1とデータ2を加算した結果が表示されます。 【解説】 *4. 別gui上のオブジェクトにアクセスする方法* ここでの処理は、全てmainfig2.mのローカルワークスペースで行っています。 具体的には、subfig2.mによって作成されるguiのエディットテキストのハンドル番号をfindobj関数によって取得し、'string'プロパティを更新する処理です。 ハンドル番号は'tag'プロパティを利用して検出していますので、検出したいオブジェクトに対して、事前に固有のtag名を設定しておく必要があります。 この方法は、別のguiへ値を受け渡す処理を、1つのgui上だけで行う場合等に使用すると便利です。