1

パラメータを設定し、それらのパラメータを別の m-File で使用するための GUI を作成しました。GUI で作成された変数は、入力変数から m-File への別のワークスペースにあることを知っています。そのため、私は を使用しようとしていますglobal variablesが、うまくいきません: 変数は空の m-File に移動します。

私は、ユーザーがこのコードを使用してパラメーター (0 または 1) を設定できる 3 つの編集ボックスを持つ GUI を持っています (1 つの編集ボックスのみのコードを示しています)。

function density_Callback(hObject, eventdata, handles)
% hObject    handle to density (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of density as text
%        str2double(get(hObject,'String')) returns contents of density as a double
global density
density = str2double(get(hObject, 'String'));
global Variavel_1
assignin('base', 'Variavel_1', density);

m-File は、次のコードを使用して GUI ボタン​​から呼び出されます。

function calculate_Callback(hObject, eventdata, handles)
% hObject    handle to calculate (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

test %m-File that uses variables set in GUI

そして、m-ファイルはVariavel_1、このコード (test.m) の残りの編集ボックスからこれと他のものを使用する必要があります。

global Variavel_1
global Variavel_2
global sum    

Variavel_1
Variavel_2
sum = Variavel_1 + Variavel_2

しかし、私が持っているのは、これらすべての変数が空です! (このコードを GUI コード内に配置できることはわかっていますが、これは本当の提案ではありません。これは、合計するこの単純な m ファイルがはるかに複雑になるため、m ファイルに移動する変数が必要になるためです)。

Variavel_1 = []

Variavel_2 = []

Sum = []

グローバル変数が失敗する理由を誰でも理解できますか?

前もって感謝します!

4

2 に答える 2

2

自動生成されOpeningFcnたコールバックでは、GUIDE を使用している場合、handle構造体で変数/フィールドを定義できます。

これは初期化部分です。これによって使用されるデータは、GUI 上のすべてのウィジェットで共有できます。

したがって、このコールバックでは、、、などに対して、variable_1次のようなものを使用できます。variable_2sum

handles.variable_1 = 1;
handles.variable_1 = 2;
handles.sum = handles.variable_1 + handles.variable_1 = 1;

% At end update handles structure
handles.output = hObject;
guidata(hObject, handles);

他のコールバックでは、あなたのButtonまたはEdit コールバックと言ってください

次のように、これらの値を通常どおり更新できます

handles.variable_1 = 12;
handles.variable_1 = 23;
handles.sum = handles.variable_1 + handles.variable_1 = 1;

% Now, at end of callback save the change you made to the structure
guidata(hObject,handles)

これらの値を確認するhandlesには、コマンド ウィンドウで入力します。

参照 :詳細については、 GUI データの保存または取得を参照してください。

これらの変数を GUI から他のスクリプトに使用するには、更新されるassignin('base','variable_1',handles.variable_1);コールバックのいずれかで、などのワークスペースに変数を割り当てるだけです。variable_1

次に、m-script でこれらの変数を直接使用できます。

于 2013-07-29T20:47:00.087 に答える