1

继续我与 GUI 的斗争,我遇到了另一个障碍。

我已经成功创建了一个按钮,该按钮将文件作为字符串打开,并将其放置在我的 GUI 中的文本框中,就像这样。

 [filename, pathname] = ...
     uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');

set(handles.Textbox1, 'string', fullfile(pathname,filename));

但现在我似乎无法在获取的文件上使用函数。我试过做

  str = get(handles.Textbox1,'string');
Histogram(str); %Histogram is a function that I created.

但我收到以下错误

???使用 ==> 直方图时出错 输入参数过多。

==> VarunGUI>pushbutton2_Callback 在 94 直方图(str)处出错;

==> gui_mainfcn 中的错误 96 feval(varargin{:});

==> VarunGUI 中的错误 42 gui_mainfcn(gui_State, varargin{:});

==> @(hObject,eventdata)VarunGUI('pushbutton2_Callback',hObject,eventdata,guidata(hObject)) 中的错误

???评估 uicontrol 回调时出错

是我调用函数的代码,还是函数本身?我无法理解如何更改函数以在调用的图像上工作,所以这可能是我的问题,函数以以下代码开头。

function Histogram
clear;
clc;
fid = fopen('');
myimage = fread(fid, [512, 683], '*uint8');
fclose(fid);

我需要在“”中放置某个变量以使 GUI 以我想要的方式运行吗?问题有点长,但请告诉我您是否需要查看其他任何内容以帮助我,任何指导或提示都会很棒。谢谢!

4

3 回答 3

3

你的Histogram函数没有输入,所以当你调用它时它会失败:Histogram(str)

于 2013-06-18T17:01:32.307 回答
2

你的问题是调用Histogram并传递它str

Histogram(str)

但是您没有定义Histogram期望输入:

function Histogram

你需要的是这样的:

function Histogram(str)

% do something with str
于 2013-06-18T17:00:51.233 回答
1

我得到了你们!

将您的直方图函数更改为:(字面意思是复制并粘贴下面的内容)

function Histogram(str) %Add input argument
%clear %DO NOT USE CLEAR in a function, the benefit of using a function is you don't have to %clear anything :)
clc;
fid = fopen(str); %Use input argument
myimage = fread(fid, [512, 683]); %take off *uint8
fclose(fid);

阅读 MATLAB 的文档,这太棒了,并且可以让您了解为什么 fread 和 uint8 不能在几秒钟内一起使用(严重的是不到 20 秒就会给您答案),它还可以解决您所有其他非常基本的问题您遇到的问题。

于 2013-06-18T17:27:01.797 回答