MATLAB сбрасывает значения переменных

#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)

В документации есть раздел об обмене данными между обратными вызовами, если вы хотите прочитать о различных методах.