MATLAB - 将参数的新值从GUI传递到.m脚本

时间:2017-03-03 08:15:33

标签: matlab user-interface

我想为我的脚本制作简单的GUI,我可以编辑参数值并运行该脚本。

我用2个按钮创建了示例scipt和GUI。我不能把脚本代码放到GUI代码中,我需要在更大的脚本上使用它。

所以,脚本代码:

number = 10;
variable(1:10) = NaN;

for i = 1:10;
    variable(i) = i * number;
end

figure
plot(variable)

按钮代码,工作正常。 script是.m文件的名称,不是函数:

function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
evalin('base','script') 

但我不知道输入编辑按钮代码的内容如果我想在脚本中更改“数字”的值:

function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (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 edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double

最后一点,有时当我尝试绘制更多图形时,一个图形会覆盖GUI图形,我只能看到按钮,但不能看到整个GUI。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

最后一段代码中给出的提示就足够了。

a = str2double(get(hObject,'String'));

这将在回调函数的堆栈中将输入值保存为double

为了将此值传递给调用者脚本的(基本)堆栈,请使用assignin

assignin('base', 'number', a)