matlab GUI 変数 共有方法

29 views (last 30 days)
Ibuki Takahashi
Ibuki Takahashi on 21 Jun 2021
Answered: Akiko on 23 Jun 2021
matlabのアプリの設計を用いて、GUIアプリを作成しております。
たくさんのボタンを設けて、それぞれのボタンにプログラムを書き込む作業をしておりました。
しかし、それぞれのボタンのコードは独立しており、他のボタンで格納した変数を、別のボタンで用いることができませんでした。
変数を共有する方法などはございますでしょうか。
よろしくお願いします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 21 Jun 2021
関数内部で使った変数はローカル変数で、当該関数を抜けるとそれらローカル変数は全て解放されてしまいます。変数を残したい場合、関数内で”永続変数”を設けるか、予め関数の外に変数を設けます。この内、今の用途に最適なのは下記真ん中の”メンバ変数を作成して用いる方法”です。
  • 関数内のローカル変数を永続変数persistent宣言する→今回は説明しません
  • 関数が所属するクラスのプロパティを作成して用いる→今回はこれを使う
  • グローバル変数を作成して用いる→今回は説明しません
具体的な説明をすると、App Designerで自動生成されるクラスに対し、下記のようにプロパティを宣言します。
% App Designerで自動生成されるクラスの冒頭部を抜粋
classdef app1 < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public) % Access = publicは"クラス外からも参照可"の意味
UIFigure matlab.ui.Figure
%ここに使いたい変数を定義する。初期値があれば定義に含める。下記は例
Prop1
Prop2 = 'some text'
Prop3 = sin(pi/12)
end
ボタンのコールバック関数を作成すると、下記のように初めから引数が追加されます。
  • app app オブジェクト。このオブジェクトは、アプリ内の UI コンポーネント、およびプロパティとして格納されている他の変数にアクセスするために使用します。
  • event — UI コンポーネントのユーザー操作に関する特定の情報が含まれているオブジェクト。
% Button pushed function: Button
function ButtonPushed(app, event)
app.Prop1 = 'Button is pushed!'
disp(app.Prop1);
%この関数を抜けた後もProp1の内容は残る
end
この引数を用い”app.(変数名)”と書くと、予め作成したプロパティにアクセスできます。

More Answers (1)

Akiko
Akiko on 23 Jun 2021
こちらの内容も関連していると思いますので、良かったらご覧ください。
・App Designer のコールバック関数間​でデータ共有する方法​はありますか?

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!