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

时间:2012-05-31 06:30:26

标签: matlab user-interface

我正在尝试从工作空间到gui edittext框中获取结构变量,这是我在多次试验后成功完成的,但我在显示变量时遇到了另一个问题。

我在将字符串应用到文本框后收到此警告。'单行编辑控件不能有多行文字'所以我将编辑框属性最大步骤更改为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);

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

2 个答案:

答案 0 :(得分:0)

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

set(handles.edit3,'string',currentValue);
模拟期间

(其中currentValue是您要显示的值)。

  

模拟完成后,当且仅当我点击编辑时   一段时间后我得到显示的值,但也是   像向下滚动显示。

只有在单击后才会看到该值,因为该代码位于“回调”功能中,当您与编辑框进行交互时会调用该功能。 如果要在模拟结束时立即显示该值,请让模拟执行 set 命令以在编辑框完成时更新。

答案 1 :(得分:0)

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

在您的更新后添加drawnow可能是必要的。但这只会在窗口处于前景时才有用。

我个人总是把东西写到日志文件中并在matlab之外显示。