#matlab #if-statement
#matlab #оператор if
Вопрос:
Я новичок в MATLAB, и я создал программу, в которой я пытаюсь создать аналогичную ситуацию
Pushbutton1
a = 1
b = 1
c = 1
if (level==1) then
newsize=<some calculations here>
a = newsize
elseif (level==2)
newsize=<some calculations here>
b = newsize
else
newsize=<some calculations here>
c = newsize
end
plot(a,b,c)
Но когда «уровень» изменяется, он должен обновить «newsize» для a / b / c. Но каждый раз, когда я нажимаю кнопку, предыдущие переменные сбрасываются. Я понимаю, что логически правильно, чтобы программа сбрасывала значения, но я не могу найти способ в основном «сохранить» значения. Я не знаю, если я слишком устал, чтобы видеть это или это сложнее, чем это, поэтому я был бы признателен, если бы вы помогли мне в этом!
Спасибо!
Ответ №1:
Если вы хотите сохранить прошлые значения, вы можете просто сделать это:
a = [a newsize];
Таким образом, при прохождении вы добавите все значения в постоянно увеличивающийся список вместо их замены.
Ответ №2:
Вы использовали инструмент GUIDE для интерактивного построения интерфейса или делали это программно?
Если вы используете РУКОВОДСТВО, вы можете использовать handles
структуру, передаваемую каждой функции обратного вызова вместе с guidata
функцией, для хранения / извлечения значений.
Если вы создаете графический интерфейс программно, вы можете использовать вложенные функции для создания замыкания над переменными в области видимости родительской функции.
Конечно, существуют также глобальные переменные, постоянные переменные и данные, хранящиеся в компонентах GUI (внутри UserData
свойства или с getappdata
помощью / setappdata
functions)
В документации есть раздел об обмене данными между обратными вызовами, если вы хотите прочитать о различных методах.