Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab中将结构变量从工作空间读入Gui?_Matlab_User Interface - Fatal编程技术网

如何在matlab中将结构变量从工作空间读入Gui?

如何在matlab中将结构变量从工作空间读入Gui?,matlab,user-interface,Matlab,User Interface,我正在尝试从工作区到gui编辑文本框获取一个结构变量,这是我在多次尝试后成功完成的,但在显示该变量时遇到了另一个问题 在将字符串应用于文本框后,我收到此警告。“单行编辑控件不能包含多行文本”,因此我将编辑框属性max step更改为2,以避免此错误 我的意图是在模拟过程中显示变量值,但我无法这样做。模拟完成后,当且仅当我在一段时间后单击编辑框时,我会得到显示的值,但这也类似于向下滚动显示 function edit3_Callback(hObject, eventdata, handles) %

我正在尝试从工作区到gui编辑文本框获取一个结构变量,这是我在多次尝试后成功完成的,但在显示该变量时遇到了另一个问题

在将字符串应用于文本框后,我收到此警告。“单行编辑控件不能包含多行文本”,因此我将编辑框属性max step更改为2,以避免此错误

我的意图是在模拟过程中显示变量值,但我无法这样做。模拟完成后,当且仅当我在一段时间后单击编辑框时,我会得到显示的值,但这也类似于向下滚动显示

function edit3_Callback(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

simout=evalin('base','simout');
L = length(simout);
vars = cell(1,L);
[vars{1:L}] = simout.signals.values;
set(handles.edit3,'string',vars);
guidata(hObject,handles);

任何人请尽快帮我解决这个问题。

如果您希望编辑框在模拟过程中显示值,您必须调用

set(handles.edit3,'string',currentValue);
在模拟过程中,currentValue是要显示的值

模拟完成后,当且仅当我单击编辑 框过了一段时间,我得到了显示的值,但这也是 就像一个向下滚动的显示器

function edit3_Callback(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

simout=evalin('base','simout');
L = length(simout);
vars = cell(1,L);
[vars{1:L}] = simout.signals.values;
set(handles.edit3,'string',vars);
guidata(hObject,handles);
只有在单击后才能看到该值,因为该代码位于回调函数中,当您与编辑框交互时会调用回调函数。
如果要在模拟结束时立即显示该值,请让模拟执行set命令,以便在编辑框完成时更新编辑框。

您可能会遇到以下问题,即Matlab进程在运行时不会更新屏幕

更新后,可能需要包括drawnow。但这只有在窗口位于前景时才有帮助

就我个人而言,我总是将内容写入日志文件,并在matlab外部显示