UIcontrol 按钮以在 matlab 中绘制工作区中的数据

Posted

技术标签:

【中文标题】UIcontrol 按钮以在 matlab 中绘制工作区中的数据【英文标题】:UIcontrol push button to plot data from workspace in matlab 【发布时间】:2015-10-28 15:55:32 【问题描述】:

我是 matlab 新手,我一直坚持使用回调函数来绘制工作区中的数据。在我的代码中,按钮 1 和 2 允许我将数据导入工作区(“importTac”和“importref”是单独的 m.files,用于将数据导入工作区并且它们运行良好)。

我的问题是如何通过单击 pushbutton_3 从工作区绘制数据?

function KinA
%Configure window
h.fig = figure('MenuBar', 'none','units','pixels','Position', [0 0 1280 750],... % [x,y,width, height]
    'name','KinA | Kinetic Analysis','numbertitle','off','Resize', 'off');
tgroup = uitabgroup('Parent', h.fig); 

% Define tabs
tab1 = uitab('Parent', tgroup, 'Title', '1| IMPORT DATA');
tab2 = uitab('Parent', tgroup, 'Title', '2| Dynamic parameters');
tab3 = uitab('Parent', tgroup, 'Title', '3| Dynamic plots');
tab4 = uitab('Parent', tgroup, 'Title', '4| Volume of distribution, DVR');


%CONTENT ON TAB1: importdata, plot TAC and 
handles.button_1 = uicontrol('Parent', tab1, 'Style','pushbutton',...
             'String','Import TACs','Position',[20 650 120 25], 'Callback', 'importTac'); % [x,y,width, height]

handles.button_2 = uicontrol('Parent', tab1, 'Style','pushbutton',...
             'String','Import reference','Position',[20 620 120 25], 'Callback', 'importRef'); % [x,y,width, height]button_importReference = uicontrol

handles.button_3 = uicontrol('Parent',tab1, 'Style','pushbutton',...
   'String','Plot raw data','Position',[20 590 120 25], 'Callback',@plot_data,handles);

%Define axes   
handles.ax1 = axes('Parent', tab1 , 'units', 'pixels', 'Position',[200 450 300 200]);
set(gca, 'tickdir', 'out', 'box', 'off', 'FontSize', 14 ,'Color',[0.8 0.8 0.9]);
xlabel('Time [min]', 'FontSize', 12, 'FontName', 'Arial');
ylabel('Activity [kBq]', 'FontSize', 12, 'FontName', 'Arial');


%Callback function

end

【问题讨论】:

importTacimportRef 是如何定义的?他们会退货吗? 感谢您的快速回复。 importTac 和 importRef 由 uigetdir 和 uigetfile 定义。他们工作正常。我想到了。我使用 evalin 访问工作区中的变量 %Callback function TAC plot function plot_data(source,eventdata) time = evalin('base','xValues');大脑 = evalin('base','y1Values');输入 = evalin('base','y2Values'); p1=plot(handles.ax1,time,brain) p2=plot(handles.ax2,time,input) 结束 【参考方案1】:

%evalin() 访问工作区中的变量 %回调函数

function plot_data(source,eventdata) 
time = evalin('base','xValues'); 
brain = evalin('base','y1Values'); 
input = evalin('base','y2Values'); 
p1=plot(handles.ax1,time,brain); 
p2=plot(handles.ax2,time,input);
end

【讨论】:

以上是关于UIcontrol 按钮以在 matlab 中绘制工作区中的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像放在 Matlab uicontrol 按钮上?

MATLAB uicontrol 回调返回矩阵

Matlab Imppoint 和 Uicontrol

突出显示时如何更改 UIControl 的大小?

以编程方式从 MATLAB 获取 GUI 数据(无 GUIDE)

用户更新后从 Matlab 编辑 uicontrol 中删除光标?