我想通过单击按钮显示命令窗口中显示的结果

时间:2016-05-01 05:53:23

标签: matlab user-interface command-line matlab-figure matlab-guide

我想通过单击按钮显示命令窗口中显示的结果。

我的意思是,我创建了一个函数,当我运行该函数时,结果显示在matlab命令窗口中。

现在我正在使用matlab gui创建一个界面,并希望通过单击按钮在文本框中显示该结果。为此,我在gui中调用此函数,但在命令窗口中获取结果。

结果包含数字和单词(约5行)

enter image description here

如何将结果从命令窗口重定向到GUI文本框?

function pushbutton4_Callback(hObject, eventdata, handles) 
global E1; 
global E2; 
results=NPCR_and_UACI(E1,E2);

1 个答案:

答案 0 :(得分:0)

最简单的方法是直接在" NPCR_and_UACI"中构建字符串。 function,将其设置为函数的附加输出,然后将其分配给statictext框。

可能的替代方案可能是:

  • 使用diary
  • 激活文本文件中输出的录制
  • 逐行阅读diary文件
  • 将这些行存储在cellarray
  • 将cellarray设置为statictext box的string

您可以使用tempname

创建唯一的文件名

在流程结束时,您可以使用delete删除临时日记文件。

如果要在recylce文件夹中移动已删除的文件,则应设置recycle on

在下文中,您可以找到该过程的可能实现;为了它,我创造了一个"虚拟" NPCR_and_UACI功能和"评论" global varaibles

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

% global E1; 
% global E2; 
E1=1;
E2=2
results=NPCR_and_UACI(E1,E2);
% Create a unique filename
tmp_file=tempname
% Activate diary recording
format long
diary(tmp_file)
% Display the output on the Command Window
disp(results)
% Turno disry off
diary off
% Open the diary file
fp=fopen(tmp_file)
% Initialize the string
res_string={};
% Initialize the row counter
cnt=0;
% Read the diary file line by line
while 1
   tline = fgetl(fp);
   if ~ischar(tline)
      break
   end
   % Increment the rwo counter and store the current line
   cnt=cnt+1;
   res_string{cnt}=tline
end
% Close the diary file
fclose(fp)
% Enable moving the file to the recycle folder
recycle('on')
% Delete the diary file (move it in the recycle folder
delete(tmp_file)
% Setr the result string in the statictext box
set(handles.text2,'string',res_string,'horizontalalignment','left','fontname','courier')

enter image description here

希望这有帮助。

Qapla'