У меня есть MATLAB GUI, который дает пользователю возможность поставить галочку. Каждый тик имеет разное математическое значение. После того, как пользователь отметит что-то, расчет будет выполнен после того, как он нажмет «Рассчитать».

Моя основная формула под кнопкой Рассчитать:

effective_weight = weight + pilotsw + fo_weight  %pilots weight & first officer's weight

pilots_weight & fo_weight имеют разные флажки и имеют следующий код:

function checkbox2_Callback(hObject, eventdata, handles)
% hObject    handle to checkbox2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of checkbox2
% --- Executes on button press in checkbox3.

if (get(hObject,'Value') == get(hObject,'Max'))

pilotw = -100

else

 pilotw = 0

end

Global pilotw (и то же самое для флажка первых офицеров)

И pilotw - глобальная переменная для функции вычисления.

Цель состоит в том, чтобы изменить эффективный вес и соответственно выполнить остальные вычисления, присутствует ли пилот (или нет).

0
Aerodynamicist 20 Ноя 2014 в 12:24
А в чем конкретно у вас проблема/вопрос?
 – 
hbaderts
20 Ноя 2014 в 13:15

2 ответа

Лучший ответ

Чтобы получить доступ к глобальной переменной pilotw, вам необходимо объявить ее как таковую в своей функции:

function checkbox2_Callback(hObject, eventdata, handles)

        %'Declare global variable'
        global pilotw

        %'Set global variable'
        if get(hObject,'Value') == get(hObject,'Max')
                pilotw = -100

        else
                pilotw = 0
        end;
end
0
user2271770user2271770 20 Ноя 2014 в 14:05
Да это помогло. И пилот должен быть инициализирован в начале кода. (т.е. пилот = 0)
 – 
Aerodynamicist
1 Дек 2014 в 16:46

Вам нужно объявить global pilotw в каждой функции, в которой вы хотите использовать эту переменную.

0
Roy 20 Ноя 2014 в 16:39