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

歡迎訪問 生活随笔!

生活随笔

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

循环神经网络

matlab gui七种参数传递方式和范围

發(fā)布時間:2025/7/14 循环神经网络 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab gui七种参数传递方式和范围 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MATLAB GUI的數(shù)據(jù)傳遞方式總匯(轉載)(2011-09-24 21:57:44) 轉載▼

matlab gui共有六種參數(shù)傳遞方式和范圍各不相同。

1.運用gui本身的varain{}、varaout{}傳遞參數(shù)(注:這種方式僅適用與gui間傳遞數(shù)據(jù),且只適合與主子結構,及從主gui調用子gui,然后關掉子gui,而不適合遞進結構,即一步一步實現(xiàn)的方式)

輸入參數(shù)傳遞:
比如子GUI的名稱為subGUI, 設想的參數(shù)輸入輸出為:[out1, out2] = subGUI(in1, in2)
在subGUI的m文件中(由GUIDE自動產生):
(1).第一行的形式為:function varargout = subGUI(varargin)
該行不用做任何修改;varargin 和 varargout 分別是一個可變長度的cell數(shù)組(MATLAB幫助文件中有說明)。輸入參數(shù)in1和in2保存在varargin中,輸出參數(shù)out1,out2包含在varargout中;
(2).在subGUI的OpeningFcn中,讀入參數(shù),并用guidata保存,即:
handles.in1 = varargin{1};
handles.in2 = varargin{2};
guidata(hObject, handles);
返回參數(shù)的設置:
(1). 在GUI子程序的OpeningFcn函數(shù)的結尾加上uiwait(handles.figure1); figure1是subGUI的Tag;
(2). subGUI中控制程序結束(如”O(jiān)K”和”Cancel”按鈕)的callback末尾加上uiresume(handles.figure1),不要將delete命令放在這些callback中;
(3). 在子GUI的OutputFcn中設置要傳遞出去的參數(shù),如 varargout{1} = handles.out1;varargout{2} = handles.out2;末尾添加 delete(handles.figure1); 結束程序。
在GUI的OpenFcn中,如果不加uiwait,程序會直接運行到下面,執(zhí)行OutputFcn。也就是說程序一運行,返回值就確定了,再在其它部分對handles.output作更改也沒有效果了。
加上uiwait后,只有執(zhí)行了uiresume后,才會繼續(xù)執(zhí)行到OutputFcn,在此之前用戶有充分的時間設置返回值。
通過以上設置以后,就可以通過 [out1, out2] = subGUI(in1, in2) 的形式調用該子程序。
在一個GUI中調用另一個GUI時,主GUI不需要特別的設置,同調用普通的函數(shù)一樣。在打開子GUI界面的同時,主程序還可以響應其它的控件。不需要擔心子GUI的返回值被傳錯了地方。

[size=+0][size=+0]2. 運用global定義全局變量傳遞參數(shù)(適用于gui內控件間以及不同gui間)

這種方式恐怕是最簡單的方式,是很省心!但是但是,簡單的問題就在于有時你會很頭疼!因為在每一個要到該全局變量的地方,你都要添一句gloal x,還有就是如果你在一個地方修改了
x的值,那么所有x的值就都變了!有的時候恐怕會出現(xiàn)紊亂。另一個更重要的問題在于,套用C++的一句話,全局變量破壞了程序的封裝性!所以,全局變量是能少用盡量少用。


3. 運用UserData傳遞參數(shù)(gui內)
直接通過對象的userdata屬性進行各個callback之間的數(shù)據(jù)存取操作。首先必須將數(shù)據(jù)存儲到一個特定的對象中,假設對象的句柄值為ui_handle,需要存儲的值為value,則輸入以下程序即可:

set(‘ui_handle’,'UserData’,Value);

此時,value數(shù)據(jù)就存在句柄值為ui_handle的對象內,在執(zhí)行的過程中若要取回變量可以通過以下方式在任意callback中獲取該數(shù)據(jù)值:

value=get(”ui_handle,’UserData’);

雖然使用這種方法簡單,但是每個對象僅能存取一個變量值,因此當同一對象存儲兩次變量時,先前的變量值就會被覆蓋掉,因此都用UserData存儲簡單與單一的數(shù)據(jù)。如下面有兩個gui函數(shù), myloadfn加載mydata.mat文件,該文件內存儲XYData變量,其值為m*2的繪圖矩陣,加載后將該變量值存儲到當前的窗口的UserData屬性中。另一個myplotfcn函數(shù)則是用以獲取該UserData屬性中存取的繪圖數(shù)據(jù),然后繪圖。代碼如下:

function myloadfcn
load mydata;
set(gcbf,’UserData’,XYdata)

function myplotfcn
XYdata=get(gcbf,’UserData’);
x=XYData(:,1);
y=XYData(:,2);
plot(x,y);

4.應用setappdata\getappdata與rmappdata函數(shù)(gui間和gui內,推薦使用)
使用上面三個函數(shù)最有彈性處理數(shù)據(jù)的傳送問題,與UserData的方式相類似,但是克服UserData的缺點,使一個對象能存取多個變量值。
(1)getappdata函數(shù)
VALUE=getappdata(H,NAME)
(2)setappdata函數(shù)
setappdata(H,NAME,VALUE)
(3)rmappdata
rmappdata(H,NAME)
首先在matlab命令窗口輸入magic(3)數(shù)據(jù),因此當前的工作空間就存儲了magic(3)這組數(shù)據(jù)了,然后建立一個按鈕來獲取并顯示magic(3)數(shù)據(jù)
>>A=magic(3);
>> setappdata(gcf,’A',’A');%save
>> uicontrol(‘String’,’顯示矩陣A’,’callback’,'A=getappdata(gcf,’A')’);

當在主子gui內調用時,可以如下設置
fig1調用fig2時,使用fig2指令來打開fig2,
在fig2的m文件中,在回調函數(shù)中用setappdata(fig1,’A',A)實現(xiàn)返回fig1,并將參數(shù)A傳遞給fig1
然后在fig1的使用A的地方添加A=getappdata(fig1,‘A’)。
但這種方式的一個問題就是沒調用一次,fig1的數(shù)據(jù)就得初始化一次,這是因為setappdata(fig1,’A',A)中出現(xiàn)了fig1,調用一次setappdata就得運行一次fig1的緣故,解決方案就是把
setappdata(fig1,’A',A)改為setappdata(0,’A',A),這樣把A讀入matlab workspace,相當于一個全局變量了,但當然比直接用global定義全局變量好!

5.結合handles和guidata函數(shù)(gui內,不推薦使用,經常出現(xiàn)問題,比如在handles中添加了變量對象Y后可能就會擠掉handles另外一個對象)
他的使用格式如下,如果你在pushbutton1中得到一個變量X,相傳出去,那么在pushbutton1的callback中,在得到X后添加如下代碼:
handles.X=X;
guidata(hObject,handles)(注意,一定是兩行連寫)
在pushbutton2中要用到X是,在其callback先添加 X=handles.X; 即可得到X的值。


6. 運用save和load(importdata)傳遞參數(shù)(gui內和gui間)
將某變量x的值先存到磁盤,用的時候在調用。格式如下:save(‘*.mat’,'x’);用的時候就用load(‘*.mat’),但這樣只是把x讀到了matlab workspace,不會用顯示,你還要再去查看這個變量名, 然后才能用,建議使用p=importdata(‘*.mat’),p是一個結構體,可以隨意使用了。當然,這種方式涉及到磁盤讀寫,速度當然會有影響的,一般情況不用,通常用在保存以及導入某個變量時!

7.使用labels=evalin('base','labels');%從workspace獲得labels的值
assignin('base','labels',labels);%修改后,放入workspace中

轉載于:https://www.cnblogs.com/daigaoyuan/archive/2012/10/18/2730173.html

總結

以上是生活随笔為你收集整理的matlab gui七种参数传递方式和范围的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。