日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

文本框赋值guide matlab,科学网-Matlab: 学习GUI (使用GUIDE时需注意的几个问题)-刘磊的博文...

發(fā)布時間:2023/12/4 循环神经网络 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文本框赋值guide matlab,科学网-Matlab: 学习GUI (使用GUIDE时需注意的几个问题)-刘磊的博文... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在博文《Matlab:學(xué)習(xí)GUI(一個簡單的例子)》(介紹的方法是完全用代碼來建立一個GUI,實(shí)際上Matlab本身有一個設(shè)計GUI的交互系統(tǒng)——GUIDE,用戶可以使用該系統(tǒng)更方便的建立自己的GUI.

本文將介紹使用GUIDE時常常遇到的幾個問題。本文將通過一個簡單的例子來說明問題,讀者朋友們可以邊看邊操作。在command line輸入guide回車,打開Layout Editor.建立一個空白的模板(Blank GUI),建立一個push button,將“String”改為“Close”,save并將文件名命名為test,如下圖:

save后,Matlab會生成兩個文件test.M和test.fig,打開test.M,如下:

functionvarargout = test(varargin)

% Begin initializationcode - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', ? ? ? mfilename,...

'gui_Singleton', ?gui_Singleton,...

'gui_OpeningFcn', @test_OpeningFcn,...

'gui_OutputFcn', ?@test_OutputFcn,...

'gui_LayoutFcn', ?[] ,...

'gui_Callback', ? []);

ifnargin && ischar(varargin{1})

gui_State.gui_Callback =str2func(varargin{1});

end

ifnargout

[varargout{1:nargout}] =gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code- DO NOT EDIT

% --- Executes justbefore test is made visible.

functiontest_OpeningFcn(hObject,eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

% --- Outputs from thisfunction are returned to the command line.

functionvarargout = test_OutputFcn(hObject,eventdata, handles)

varargout{1} = handles.output;

% --- Executes on buttonpress in pushbutton1.

functionpushbutton1_Callback(hObject,eventdata, handles)

生成的M文件的結(jié)構(gòu)主要由三個子函數(shù)構(gòu)成:_OpeningFcn,這個函數(shù)是在GUI界面出現(xiàn)以前Matlab在后臺運(yùn)行的,GUI設(shè)計者可以在這個函數(shù)內(nèi)完成數(shù)據(jù)初始化設(shè)置、GUI的界面的控制和調(diào)整等工作。_OutputFcn函數(shù)是M文件最后運(yùn)行的函數(shù),主要是為了輸出運(yùn)行結(jié)果。_Callback函數(shù)用于控制component的觸發(fā)行為,比如說用戶按下界面的按鈕后,該按鈕應(yīng)該執(zhí)行什么命令。我們這個例子設(shè)計的是按下“Close”按鈕后,GUI界面關(guān)閉,因此需要在

functionpushbutton1_Callback(hObject, eventdata, handles)

后面加上:

delete(handles.figure1);

下面我們開始借助這個簡單的例子,講一講新手在應(yīng)用GUIDE時常見的三個問題:

問題一:figure Name和figure tag弄混了。

Figure Name指的是M文件和Fig文件的name,即本例中的test. Tag指的是設(shè)計GUI界面時為每個component所指定的標(biāo)簽,也是程序中唯一的可以識別component的名字,GUI的面板也是一個component,有自己的tag,即本例中默認(rèn)的figure1.弄混figure tag和figure name的例子如下:

錯誤代碼:

functionpushbutton1_Callback(hObject, eventdata, handles)

delete(handles.test);

當(dāng)運(yùn)行錯誤代碼時,Matlab會提示找不到handles中的test變量,因?yàn)閔andles只是存儲component的句柄,每個句柄是以tag來命名的:

??? Reference to non-existentfield 'test'.

Error in ==>test>pushbutton1_Callback at 81

delete(handles.test);

問題二:uiwait在邏輯上與uiresume不配對。

還是上面的例子,如果再增加一個功能,等用戶按下“Close”按鈕后,在屏幕輸出“OK”,否則不輸出。為實(shí)現(xiàn)該功能,在test_OpeningFcn的guidata語句后增加:

% UIWAIT makes test waitfor user response (see UIRESUME)

uiwait(handles.figure1);

在test_OutputFcn的varargout{1}語句后添加:

delete(handles.figure1);

將pushbutton1_Callback中的delete(handles.figure1)刪除,并添加:

disp('OK');

uiresume(handles.figure1);

運(yùn)行后,用戶點(diǎn)擊“Close”按鈕,一切正常。可是,當(dāng)用戶不點(diǎn)擊“Close”而是直接關(guān)閉窗口時,程序提示OutputFcn輸出錯誤:

出現(xiàn)該錯誤的原因是:當(dāng)用戶直接關(guān)閉窗口時,所有在內(nèi)存中的變量都被清楚,程序在執(zhí)行到OutputFcn是已沒有變量可以賦值給結(jié)構(gòu)變量varargout{1}了。為了改正該錯誤,需要添加_CloseRequestFcn函數(shù):

% Executes when userattempts to close figure1.

functionfigure1_CloseRequestFcn(hObject, eventdata, handles)

% hObject ? ?handle to figure1 (see GCBO)

% eventdata ?reserved - to be defined in a future versionof MATLAB

% handles ? ?structure with handles and user data (seeGUIDATA)

ifisequal(get(hObject,'waitstatus'),'waiting')

% TheGUI is still in UIWAIT, us UIRESUME

uiresume(hObject);

else

% TheGUI is no longer waiting, just close it

delete(hObject);

end

可是,如果直接將上述代碼復(fù)制到test.m文件中,保存,運(yùn)行,關(guān)閉窗口時,同樣會出現(xiàn)上述OutputFcn輸出錯誤,這個就涉及到下面第三個問題。

問題三:Layout Editor的設(shè)置和M文件不同步。

為解決上述問題,可打開figure1的Property Inspector,注意到CloseRequestFcn一欄,顯示的是closereq,點(diǎn)擊以下旁邊的圖片,變?yōu)?#xff1a;

這說明兩者已經(jīng)同步,此時可以放心的運(yùn)行程序了。

轉(zhuǎn)載本文請聯(lián)系原作者獲取授權(quán),同時請注明本文來自劉磊科學(xué)網(wǎng)博客。

收藏

分享

分享到:

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的文本框赋值guide matlab,科学网-Matlab: 学习GUI (使用GUIDE时需注意的几个问题)-刘磊的博文...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。