2013-04-03 34 views
0

我想将一个数组传递给一个GUI,并在轴上显示该数组的每个元素...这些元素是图像的文件名...我写了一段代码...这是我想传递一个数组“结果”到GUI result_image.m将数组传递给gui在matlab中

result_image(result); 

在我写的GUI的opening_fn我xyz.m文件...

result = varargin{1}; 
handles.output = hObject; 

% Update handles structure 
guidata(hObject, handles); 
%axes(handles.axes1); 
%imshow(im2fn); 
for jj = 1:length(result) 
axes(handles.axesjj); 
imshow(result(jj)); 

我得到一个错误为str2func 无效的函数名''
我不知道wh at是'',还有iam在线result_image(result)得到错误;
请帮帮我!

+0

我不知道它是downvoted,我在matlab中不知道多少,所以请证明理由... – Twinkal

回答

0

如果你看看this它会告诉你如何添加输入参数到你的用户界面。事实上,这比简单地将varargin添加到您的OpeningFcn参数中要复杂一些。原因是你必须编辑以DO NOT EDIT这个单词开头的代码位:-)

你必须添加一些代码,以确定它不应该运行代码gui_State.gui_Callback = str2func(varargin{1});。通常情况下,这段代码允许外部访问文件中的函数(即UI回调),但因为它位于if语句if nargin && ischar(varargin{1})内,所以当您将参数传递给UI是一个字符串时,它认为您正在尝试获取文件中某个函数的句柄,并在通过它的空字符串上调用str2funcvarargin{1})。

所以这就是为什么它不起作用。您可以简单地通过使用varargin{2}作为输入参数来修复此问题,并使用result_image([], result)打开您的UI,以便ischar(varargin{1})为false。为了使它更健壮一点,你应该改变

if nargin && ischar(varargin{1}) 

if nargin > 0 && nargin < 2 && ischar(varargin{1}) 

注意,你已经通过它在首位空字符串的事实可能是表示要在错误的你的代码打开用户界面(即生成result)。