2013-06-18 54 views
0

繼續我對GUI的鬥爭,我遇到了另一個路障。在GUI matlab中運行函數

我成功創建了一個按鈕,以字符串形式打開一個文件,並將它放置在我的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 at 94直方圖(str);

錯誤==> gui_mainfcn at 96 feval(varargin {:});

錯誤在==> VarunGUI at 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以我想要的方式動作?問題有點長,但請告訴我,如果您需要查看任何其他信息以幫助我,那麼任何指導或技巧都會很棒。謝謝!

+0

您是否嘗試過使用'dbstop if error'並確定哪裏出現了奇怪的東西? –

回答

2

你的問題是,呼叫Histogram並把它傳遞str

Histogram(str) 

但是你沒有定義Histogram期望輸入:

function Histogram 

你需要的是這樣的:

function Histogram(str) 

% do something with str 
+0

哇我們的答案几乎同步! –

+0

@schorsch我不完全確定如何「定義直方圖以期望輸入」,正如你所說。 – user2475404

+0

@m_power ...調試Matlab ...練習使主人;-) – Schorsch

3

您的Histogram功能沒有輸入,所以當你打電話時它會失敗:Histogram(str)

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秒就能給你答案),它也可以解決你所有的其他非常基本的問題。

+1

閱讀某人的想法,可能...您可能可以將此答案複製/粘貼到可能正在製作的新問題中 – Schorsch

+0

生病抹去我最近提出的問題,您是拯救者,謝謝先生。 – user2475404