如何在GUI MATLAB中的不同函数中使用相同的变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在GUI MATLAB中的不同函数中使用相同的变量相关的知识,希望对你有一定的参考价值。

我有一个弹出菜单,其中包含以下代码。 C1和C2有两种选择。如果用户选择C1,我想将值设置为10,如果用户选择C2,我想将值设置为20。

function pop_Callback(hObject, eventdata, handles)

contents = cellstr(get(hobject,'String'));
A = contents{get(hObject,'Value')};
if (strcmp(A,'C1'))
    X = 10;
elseif (strcmp(A,'C2'))
    X = 20;
end
set(handles.pop,X)

我想使用带按钮和静态文本的另一个函数来显示答案,其中输出为,无论设定值+ 12。

function push_Callback(hObject, eventdata, handles)

inX = get(handles.pop,X);
out = inX + 12;
set(handles.ans,'String',out)

但是,我在set和get函数中有一些错误,因此我遇到了麻烦。请帮忙。

答案

要避免使用全局变量,可以使用图形窗口的UserData属性(假设uiobjects是同一图形的子对象)。例如:

function pop_Callback(hObject, eventdata, handles)

% ...

set( ancestor(hObject,'figure'), 'UserData', X )

function push_Callback(hObject, eventdata, handles)

inX = get( ancestor(hObject,'figure'), 'UserData' );
out = inX + 12;
set(handles.ans,'String',out)
另一答案

可能是你可以尝试全局变量

function pop_Callback(hObject, eventdata, handles)
global X;
contents = cellstr(get(hobject,'String'));
A = contents{get(hObject,'Value')};
if (strcmp(A,'C1'))
X = 10;
elseif (strcmp(A,'C2'))  
X = 20;
set(handles.pop,X)
end

并使用相同的代码行global X;在任何想要使用变量x的函数内部。

function push_Callback(hObject, eventdata, handles)
global X;
out = X + 12;
set(handles.ans,'String',out)

在任何函数中,对X的任何值的更改对于将其声明为全局的所有函数都是可见的。

以上是关于如何在GUI MATLAB中的不同函数中使用相同的变量的主要内容,如果未能解决你的问题,请参考以下文章

matlab设计GUI

Matlab GUI 错误值

matlab中的GUI,轴中的图像循环

matlab中的rem怎么用

Matlab GUI 中怎么清空axes中的图形

GUI运行时如何在Matlab中截取击键