Matlab交互式程序設(shè)計(jì)教程及舉例_第1頁(yè)
Matlab交互式程序設(shè)計(jì)教程及舉例_第2頁(yè)
Matlab交互式程序設(shè)計(jì)教程及舉例_第3頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、BLAPK-s:>e Q<i :cartup jeF.-nalabwcikl.un1it ed figMatlab交互式程序設(shè)計(jì)教程及舉例、創(chuàng)建 GUI (Graphics User In terface)新文件和編輯已經(jīng)存在的GUI文件 1、在matlab命令窗口中鍵入 guide,彈出如下的對(duì)話(huà)框:&U1DE Quick St artCr-y(j NsAV(jlJI Ooen tki?,1)rxj &UIGUl&± t9,rnplat6s尸怕審已匕. Sank OUI Defsul:GUI 刪協(xié)沖w nd Menu f/nd =il Q je=

2、UiDn D <tinn這是一個(gè)雙頁(yè)面對(duì)話(huà)框,分別用于創(chuàng)建新文件和打開(kāi)已存在的GUI文件,鼠標(biāo)點(diǎn)擊相應(yīng)的標(biāo)題即可切換。2、圖中可見(jiàn)“創(chuàng)建新的 GUI ”有四種模版選項(xiàng),不管其它幾個(gè),點(diǎn)選第一項(xiàng),按“OK '按鈕可打開(kāi)如圖所示的 GUI編輯器* I v.u ”1 < xe t其中左邊是控件工具欄,用戶(hù)可根據(jù)自己的程序?qū)⑺枰目丶檬髽?biāo)拖至右側(cè)的編輯區(qū)域irfirl IhAj f t E:FlI-i 竊 t zw LvrtuA T>elc H« 町進(jìn)行布局。(用戶(hù)可將鼠標(biāo)懸停在各個(gè)控件圖表上查看各個(gè)對(duì)象的名稱(chēng))菜單欄下邊是工具條,其中常用的有“ -I”(保存當(dāng)

3、前GUI文件和相應(yīng)的m文件)、“”(編寫(xiě)相應(yīng)協(xié)調(diào)運(yùn)行的m文件、“上”(編輯當(dāng)前控件的相應(yīng)屬性)調(diào)”(創(chuàng)建和修改用戶(hù)自己的程序菜單)(保存當(dāng)前文件并運(yùn)行改程序)。右下方主要區(qū)域是程序的界面布局窗口(灰色網(wǎng)格區(qū)域是布局區(qū)域,用戶(hù)可根據(jù)程序需要用鼠標(biāo)拖動(dòng)該區(qū)域的右下角調(diào)整該區(qū)域的大小)。3、此時(shí)可以按下“鬥”圖標(biāo)保存該文件(自然此時(shí)程序沒(méi)有任何功能,只有一個(gè)主框架)彈出文件保存對(duì)話(huà)框,在文件名處輸入一個(gè)文件名(英文字母開(kāi)頭),如“ my1 ”等,擴(kuò)展名自動(dòng)設(shè)置為“.fig ”。系統(tǒng)除了保存當(dāng)前的界面文件外,還自動(dòng)生成一個(gè)與該界面一起協(xié)調(diào)運(yùn)行的“ myl.m ”文件,并在 m文件編輯窗口中打開(kāi)它。4、

4、瀏覽一下該文件,可以看到該文件中目前自動(dòng)創(chuàng)建了3個(gè)函數(shù): function varargout = my1(vararg in) fun ctio n my1_0pe nin gFc n( hObject, even tdata, han dies, varargi n)function varargout = my1_OutputFc n( hObject, even tdata, han dies)這些函數(shù)聲明和參數(shù)在后續(xù)的程序設(shè)計(jì)中不要做任何修改,切記! !對(duì)我們目前的應(yīng)用來(lái)說(shuō)第一個(gè)函數(shù)和第三個(gè)函數(shù)的程序體也不要做任何修改。根據(jù)自己的程序涉及需要只需修改第二個(gè)函數(shù)的程序體部分。(具體的修

5、改方式可以通過(guò)我的例子程序加以體會(huì)。)注意第二個(gè)函數(shù)程序體的最后一條語(yǔ)句guidata(hObject, han dies);該語(yǔ)句在后續(xù)的程序設(shè)計(jì)中將會(huì)頻繁使用,現(xiàn)在請(qǐng)先記住它。5、祝賀你!你現(xiàn)在已經(jīng)有了一個(gè)名為"myl.m ”和"myl.fig ”的可以運(yùn)行的文件了!現(xiàn)在可以在matlab命令窗口中鍵入“my1 "運(yùn)行改程序,自然,除了顯示一個(gè)標(biāo)題為“my1 ” 的空白窗口外,你還不能進(jìn)行任何交互式控制操作(自然除了關(guān)閉該窗口外),因?yàn)槟氵€沒(méi)有寫(xiě)任何控制程序和添加任何控件。二、增加控件及編寫(xiě)相應(yīng)的執(zhí)行程序1、現(xiàn)在可以編輯運(yùn)行窗口的標(biāo)題欄一一即將“my1 ”修改

6、為自己希望的標(biāo)題,本例中我改為"參數(shù)a,b,n對(duì)r=acos(nt+b)的影響”。在GUI設(shè)計(jì)窗口中點(diǎn)擊“耳”工具條圖標(biāo),彈出如下的“屬性編輯框”F金 Prus|iert y Ijia-pectarES 9Sdtking3tiir«H(«n日”201引QU(Tff(qneuSiitf onpnwnF c n匚:.ppirigIzMClow 令試F t 削F C 伏口11, 1CieeIbFgiiCwrrerttcriaractefr0CwreirtPoinE!-a.2 -D OTT LjSeEeFcnDtutkCOrlTTDli回onHo"FileNdi

7、HIE:VnatibMDrn!ji .fl a1加1汕山V該窗口對(duì)于后續(xù)設(shè)計(jì)中的每個(gè)控件都可以打開(kāi)(通過(guò)點(diǎn)擊工具條圖標(biāo)),它共有2列,左列是當(dāng)前對(duì)象的用戶(hù)可以修改的屬性名(按首字母順序排列),右列是每個(gè)屬性的可以編 輯的屬性值,現(xiàn)在在左列找到“name ” 一項(xiàng),將右側(cè)的自動(dòng)生成的“my1 ”改為“參數(shù)a,b,n 對(duì)r=acos(nt+b) 的影響"。關(guān)閉此窗口,點(diǎn)擊“ P "以保存當(dāng)前修改并運(yùn)行程序。 0K !窗 口的標(biāo)題欄已經(jīng)變成了 “參數(shù) a,b,n對(duì)r=acos(nt+b) 的影響"。2、現(xiàn)在開(kāi)始程序的布局及控制設(shè)計(jì),先從最簡(jiǎn)單的一個(gè)控制按鈕開(kāi)始。拖動(dòng)GU

8、I設(shè)計(jì)窗口左側(cè)的“ Push Butt on "控件至右側(cè)設(shè)計(jì)區(qū)域中的自己希望的位置,放開(kāi)鼠標(biāo),然后可以點(diǎn)選并拖動(dòng)該控件的右下角改變?cè)摽丶拇笮。瑒t界面中的第一個(gè)控件就緒。目前可以點(diǎn)擊“ O”以保存當(dāng)前修改并運(yùn)行程序。發(fā)生了什么事情?運(yùn)行窗口的響應(yīng)位置處有了這個(gè)交互式控制按鈕!點(diǎn)擊這個(gè)按鈕,除了按鈕自動(dòng)界面上有個(gè)形象的動(dòng)態(tài)響應(yīng)外,不會(huì)有任何響應(yīng),因?yàn)槟壳拔覀冞€沒(méi)有編寫(xiě)任何控制程序。3、現(xiàn)在我們開(kāi)始編寫(xiě)該控制程序。點(diǎn)擊“ -卜工具欄圖標(biāo),打開(kāi) m文件編輯器,瀏覽相應(yīng)的文件,會(huì)發(fā)現(xiàn)文件末尾多了一個(gè)函數(shù)頭:function pushbutt on 1_Callback(hObject, e

9、ve ntdata, han dies)pushbutt on1,其中這是系統(tǒng)自動(dòng)生成的相應(yīng)按鈕控件的回調(diào)函數(shù),系統(tǒng)自動(dòng)將其命名為pushbutt on代表該控件的類(lèi)別是 "Push Butt on ”,后面的阿拉伯?dāng)?shù)字代表這是用戶(hù)在界面設(shè)計(jì)中所創(chuàng)建的第幾個(gè)(該控件名稱(chēng)用戶(hù)可以進(jìn)行修改,具體修改方法見(jiàn)下一條說(shuō)明)?,F(xiàn)在用戶(hù)可以在該函數(shù)頭下邊填寫(xiě)相應(yīng)的自己所希望的控制程序。目前我們只希望用戶(hù)點(diǎn)擊按鈕時(shí)進(jìn)行一個(gè)簡(jiǎn)單的操作:結(jié)束當(dāng)前程序并關(guān)閉該窗口。這只需如下的一條語(yǔ)句即可:(將之寫(xiě)在該函數(shù)頭的下面)close;保存修改后的m文件,回到GUI設(shè)計(jì)窗口,再次點(diǎn)擊一”運(yùn)行程序,然后在運(yùn)行后的窗

10、口中點(diǎn)擊該按鈕。哈哈!如我所愿,程序安全退出了!So Easy!pushbutto n1 ”名稱(chēng)改為自己容”工具條圖標(biāo),彈出相應(yīng)的“屬。本例中我的調(diào)整如下:改為“ jieshu ”;(此時(shí)如果保存修改,4、下面我們可以調(diào)整該按鈕的界面顯示和將自動(dòng)生成的易記住的個(gè)性化名字。在GUI設(shè)計(jì)窗口中點(diǎn)擊此按鈕,然后點(diǎn)擊工具條上的“ 性編輯框”已調(diào)整它的名稱(chēng)和運(yùn)行時(shí)的界面屬性(任選)(1)找到“ tag ”屬性,將其后的“ pushbutton1然后進(jìn)入相應(yīng)的 m文件編輯窗口,可以驚喜地看到其中的最后一個(gè)函數(shù)也進(jìn)行了相應(yīng)的修改:(將函數(shù)頭中的“ pushbutto n1 ”變成了 “jieshu ”)fu

11、nction jieshu_Callback(hObject, even tdata, han dles)% hObject handle to jieshu (see GCBO)% even tdatareserved - to be defi ned in a future version of MATLAB% han dlesstructure with han dles and user data (see GUIDATA)close;在屬性編輯框中找到“String ” 一欄,將后面的內(nèi)容改為“結(jié) 束”;找到“FontSize將后面的內(nèi)容改為“ 20 ”;找到“ Foreground

12、Color”,點(diǎn)擊左右兩欄間的圖標(biāo),彈出顏色選擇窗口,點(diǎn)選自己喜歡的顏色; 找到"FontName ”,將后續(xù)的內(nèi)容改為"楷體_GB2312 ”, 找到"FontWeight ",點(diǎn)擊后面的圖標(biāo),在下拉菜單中選擇"Bold ”一項(xiàng)?,F(xiàn)在再運(yùn)行程序,觀察運(yùn)行界面的變化,體會(huì)各個(gè)屬性值和屬性名的調(diào)整對(duì)按鈕外觀的影響。5、 現(xiàn)在在GUI設(shè)計(jì)窗口中再建立一個(gè)按鈕,(界面的詳細(xì)設(shè)計(jì)略),本例中我講顯示字符改 為了“文檔”,它的“ Tag”改為了“ help ” .進(jìn)入m文件編輯器,發(fā)現(xiàn)最后又增加了一個(gè)函數(shù):function help_Callback(h

13、Object, eve ntdata, han dles)在該函數(shù)頭下編寫(xiě)下列一條程序:winopen ('code.pdf);其功能是將程序控制權(quán)交給windows,由windows打開(kāi)引號(hào)內(nèi)所指定的一個(gè)當(dāng)前路徑下的文件,本例中我隨便選了一個(gè)PDF文檔,在程序執(zhí)行時(shí)點(diǎn)擊該按鈕即可打開(kāi)該文檔。大家最后上交的綜合作業(yè)中的文檔及使用說(shuō)明幫助文件我希望大家以這樣連接的方式可以讓我順利簡(jiǎn)單地打開(kāi)。6、繼續(xù)界面的設(shè)計(jì)工作。為了在程序的運(yùn)行界面中顯示圖形,需要建立圖形窗口,建立的過(guò)程很簡(jiǎn)單,同樣是拖動(dòng)GUI設(shè)計(jì)見(jiàn)面中左側(cè)的“Axis ”控件至右側(cè)的界面布局窗口的自己希望的位置,然后用鼠標(biāo)拖動(dòng)方式調(diào)

14、整其大小即可。本例中我建立了兩個(gè)圖形窗口,其“Tag ”名系統(tǒng)自動(dòng)生成為“Axes1 ”和“ Axes2 ”(用戶(hù)也可同樣通過(guò)屬性編輯窗口修改為自己個(gè)性化的名稱(chēng),本例中我沒(méi)有做相應(yīng)的修改)。此外,我又建立了第三個(gè)控制按鈕,其“Tag ”屬性改為了 “jump ”,“String ”屬性改為了“跳起來(lái)”,并進(jìn)行了如下的布局??梢栽趍文件中看到此時(shí)又多了一個(gè)新的函數(shù)文件頭function jump_Callback(hObject, even tdata, han dies)該按鈕的控制函數(shù)較為復(fù)雜,后續(xù)中我再詳細(xì)說(shuō)明,現(xiàn)在先不寫(xiě)任何程序。7、在布局界面上再增加兩個(gè)“ slider”控件(滾動(dòng)條)

15、,系統(tǒng)自動(dòng)將其“ Tag ”命名為“ sliderl ”和“slider2 ”,我在本例中依次用它們?cè)诔绦蜻\(yùn)行時(shí)控制顯示圖像的函數(shù)中的“a”、“b”兩個(gè)參數(shù)的調(diào)整,此時(shí)瀏覽一下m文件,可以看到自動(dòng)為每個(gè)“Slider ”增加了兩個(gè)函數(shù),分別如下:function slider1_Callback(hObject, eve ntdata, han dles)% hObjecthan dle to sliderl (see GCBO)% even tdatareserved - to be defi ned in a future version of MATLAB% han dlesstruct

16、ure with han dles and user data (see GUIDATA)% Hin ts: get(hObject,'Value') retur ns positi on of slider%get(hObject,'Mi n') and get(hObject,'Max') to determi ne range of slider% - Executes during object creation, after setting all properties.function slider1_CreateFc n( hObj

17、ect, eve ntdata, han dles)% hObjecthan dle to slider1 (see GCBO)% even tdatareserved - to be defi ned in a future version of MATLAB% han dlesempty - han dles not created un til after all CreateFc ns called% Hint: slider con trols usually have a light gray backgro und, cha nge%'usewhitebg' to

18、 0 to use default.See ISPC and COMPUTER.usewhitebg = 1;if usewhitebgset(hObject,'Backgrou ndColor',.9 .9 .9);elseset(hObject,'Backgrou ndColor',get(0,'defaultUico ntrolBackgrou ndColor');end% Executes on slider moveme nt.function slider2_Callback(hObject, eve ntdata, han dles

19、)% hObjecthan dle to slider2 (see GCBO)% even tdatareserved - to be defi ned in a future version of MATLAB% han dlesstructure with han dles and user data (see GUIDATA)% Hin ts: get(hObject,'Value') retur ns positi on of slider%get(hObject,'Mi n') and get(hObject,'Max') to det

20、ermi ne range of slider% - Executes during object creation, after setting all properties.function slider2_CreateFc n( hObject, eve ntdata, han dles)% hObjecthan dle to slider2 (see GCBO)% even tdatareserved - to be defi ned in a future version of MATLAB% han dlesempty - han dles not created un til a

21、fter all CreateFc ns called% Hint: slider con trols usually have a light gray backgro und, cha nge%'usewhitebg' to 0 to use default.See ISPC and COMPUTER.usewhitebg = 1;if usewhitebgset(hObject,'Backgrou ndColor',.9 .9 .9);elseset(hObject,'Backgrou ndColor',get(0,'default

22、Uico ntrolBackgrou ndColor');end其中的兩個(gè)_CreateFcn我們后續(xù)不需任何操作,所以也不需要任何修改,現(xiàn)在先記住 我們需要對(duì)于兩個(gè)Callback函數(shù)進(jìn)行程序的填寫(xiě)操作,以響應(yīng)當(dāng)程序執(zhí)行時(shí)當(dāng)用戶(hù)拖動(dòng)滾 動(dòng)條時(shí)應(yīng)該引起何種響應(yīng),具體的響應(yīng)程序也在后續(xù)填寫(xiě),現(xiàn)在先在GUI界面中修改其屬性值。選中“ Sliderl ”,打開(kāi)相應(yīng)的屬性編輯器,找到其中的“ Max ”一欄,將后面的內(nèi)容改 為“ 8 ”(本例我的“ a ”值最大值為8),找到其中的“ Min ”一欄,將后面的內(nèi)容改為“1 ”(本例我的“ a”值最小值為1),找到“ Value ”一欄,點(diǎn)擊后面

23、的圖標(biāo),在彈出的對(duì)話(huà)框 中將“ 0.0 ”改為“ 5 ”,以指定在程序進(jìn)行運(yùn)行時(shí)將該滾動(dòng)條的值設(shè)置為5。此時(shí)可以運(yùn)行程序,觀察第一個(gè)滾動(dòng)條中的滑塊位置應(yīng)該在中間偏右的位置,這說(shuō)明上述設(shè)定已經(jīng)成功?!癝lider2 ”我在這里先不做調(diào)整,系統(tǒng)自動(dòng)默認(rèn)最小值為0,最大值為1,當(dāng)前值為0 ,邏輯上本例的“ b”值應(yīng)該在0與2 n之間,作為示例,我在后續(xù)的程序書(shū)寫(xiě)中將獲得的該 滾動(dòng)條上的當(dāng)前值乘以2 n來(lái)進(jìn)行相應(yīng)的調(diào)整。作為示例,我對(duì)于本程序中參數(shù)n用一個(gè)“ Edit Text ”進(jìn)行程序運(yùn)行中的輸入控制,所以在界面上再產(chǎn)生一個(gè)“Edit Text ”,系統(tǒng)自動(dòng)將其“ Tag ”設(shè)置為“ edit1

24、”,我對(duì)此不作修改,只是將其“ FontSize ”屬性調(diào)整為“ 16 ”,將String '屬性改為“ 1 ”。此時(shí)檢查m 文件,可以觀察到系統(tǒng)又自動(dòng)創(chuàng)建了2個(gè)函數(shù):function edit1_Callback(hObject, even tdata, han dles)function edit1_CreateFc n( hObject, even tdata, han dles)同樣其中的edit1_CreateFcn我們也不要進(jìn)行任何改動(dòng),目前先記住日后在edit1_Callback 中編寫(xiě)程序以響應(yīng)用戶(hù)在程序運(yùn)行時(shí)響應(yīng)的輸入即可。到此,本示例程序的控制對(duì)象和2個(gè)繪圖區(qū)域已經(jīng)

25、完全建立完畢,目前我安排的界面如圖所示。曲心丄 jua 巴* 匚町ml “4 cap£ *y" * 11 c-efiskx-C Tf * 1 <>ri| 費(fèi)=! to»j"3 科 dh.31 E4. et :二與 1©費(fèi)1.1北<<1/>q J/ 跳起來(lái)炙檔1弟柬8、下面再進(jìn)行一些程序界面的輔助工作,用“Static Text ”控件對(duì)界面增加一些說(shuō)明,以增加界面的友好性。在第一個(gè)圖形窗口上方的空隙中放置一個(gè)“Static Text ”,將“String ”改為“參數(shù)a,b,n對(duì)r=acos(nt+b)的影響”,按

26、自己的意愿設(shè)置好位置,顏色,字體大小,字體名稱(chēng)等屬性 值,具體設(shè)置詳細(xì)大家可以通過(guò)屬性編輯器窗口查看。在兩個(gè)滾動(dòng)條和編輯框的左側(cè)依次放置3個(gè)“ Static Text ”,分別用于說(shuō)明后續(xù)的 3個(gè)控件分別用于控制哪個(gè)參數(shù),為此,將它們的“String ”屬性分別設(shè)置為“ a”、“b”、“n”,大小和顏色等外觀形象進(jìn)行適當(dāng)?shù)恼{(diào)整。在第一個(gè)滾動(dòng)條下的左右兩端各放置一個(gè)“Static Text ”,分別用于說(shuō)明該滾動(dòng)條的最大值和最小值,為此將它們的“String ”屬性分別設(shè)置為“ 1”、“8”;在第二個(gè)滾動(dòng)條下的左右兩端各放置一個(gè)“ Static Text ”,分別用于說(shuō)明該滾動(dòng)條的最大值和最小值

27、,為此將它 們的“ String ”屬性分別設(shè)置為“ 0”、“2 n”。最后,在兩個(gè)滾動(dòng)條下方中部分別放置一個(gè)“Static Text ”對(duì)象,分別用于實(shí)時(shí)顯示對(duì)應(yīng)的滾動(dòng)條在程序運(yùn)行時(shí)被用戶(hù)拉動(dòng)時(shí)當(dāng)前的具體數(shù)值,所以其“String ”屬性值將來(lái)在程序中即時(shí)獲取,因此在目前設(shè)計(jì)階段不進(jìn)行調(diào)整,但為了避免混淆,將二者的“Tag ”屬性分別修改為“ texta ”和“textb ”以便于進(jìn)行程序控制,具體實(shí)現(xiàn)方式參見(jiàn)后續(xù)程序的編寫(xiě)。這樣設(shè)計(jì)完成時(shí)得到的界面如下圖。三、完整程序的編寫(xiě)。目前本例所希望的界面布局已經(jīng)全部完成(除菜單外,此功能后續(xù)介紹),現(xiàn)在開(kāi)始程序的編寫(xiě)工作,寫(xiě)具體的程序前, 必須來(lái)了

28、解 matlab的各function (函數(shù))間的數(shù)據(jù)傳輸機(jī)制。我們先來(lái)考察一下已經(jīng)完成的m文件,在目前系統(tǒng)自動(dòng)生成的所有function中,除第一個(gè)(相當(dāng)于 C語(yǔ)言中的main函數(shù))外,其它的所有函數(shù)的輸入?yún)?shù)中都有一個(gè)名為 han dies的變量,這是matlab為GUI程序開(kāi)發(fā)者提供的一個(gè)數(shù)據(jù)結(jié)構(gòu),用于各個(gè)函數(shù)之 間的數(shù)據(jù)傳輸,ha ndles是結(jié)構(gòu)名,程序中的每個(gè)各fun ction間的數(shù)據(jù)都必須以han dies.*的形式存在,才能實(shí)現(xiàn)各協(xié)調(diào)工作的各函數(shù)之間的數(shù)據(jù)傳輸,目前當(dāng)我們完成設(shè)計(jì)后,我們已經(jīng)有了一批形如han dies.*的變量,如在添加了第一個(gè)顯示為“結(jié)束”的按鈕并將其“T

29、ag ”屬性值設(shè)置為“jieshu ”后系統(tǒng)已經(jīng)自動(dòng)地為程序開(kāi)發(fā)者創(chuàng)建了名為handles.jieshu的變量,如果我們?cè)诔绦蛑邢ML(fǎng)問(wèn)這個(gè)按鈕對(duì)象,我們就可通過(guò)這個(gè)han dles.jieshu變量找到它,具體的訪(fǎng)問(wèn)程序編寫(xiě)后續(xù)寫(xiě)程序時(shí)不難學(xué)會(huì)。接著我們創(chuàng)建“Tag ”屬性分別為“help ”和“ jump ”第二個(gè)、第三個(gè)按鈕時(shí),系統(tǒng)馬上為我們也創(chuàng)建了相應(yīng)的兩個(gè)變量handles.help 和handles.jump 。接著我們建立兩個(gè)圖形窗口時(shí),系統(tǒng)也依次建立了handles.axel 和handles.axes2兩個(gè)變量用于程序中訪(fǎng)問(wèn)這兩個(gè)圖形窗口,在設(shè)置好兩個(gè)滾動(dòng)條后,系統(tǒng)也立即建立

30、了handles.sliderl 和handles.slider2兩個(gè)變量,然后再建立滾動(dòng)條下面的編輯框時(shí)也建立了handles.editl變量。現(xiàn)在相信你明白“Tag ”屬性值的作用了吧?該屬性值是什么,系統(tǒng)就在其前加上handles.而產(chǎn)生可以訪(fǎng)問(wèn)該控件的一個(gè)變量,所以界面設(shè)計(jì)階段如果自己想修改“Tag ”屬性值,必須保證和其它的不能相同,且符合matlab變量的命名規(guī)則一一必須英文字母開(kāi)頭,由字母數(shù)字和下劃線(xiàn)組成。接著我們?cè)诮缑嫔喜贾玫拿總€(gè)“Static Text "(靜態(tài)文本)都依次產(chǎn)生一個(gè)前綴為han dels.的與相應(yīng)的“ Tag ”屬性一樣的變量,本例程序中我們所設(shè)置的

31、那些靜態(tài)文本變量除最后2個(gè)外(即分別位于兩個(gè)滾動(dòng)條下方中間的文本框)都不需要進(jìn)行控制,所以不用理睬它們,只需記住最后兩個(gè)變量名分別是handles.texta和handles.textb,(它們的“ Tag ”屬性在設(shè)計(jì)階段我們分別已經(jīng)改為了 texta 和textb 。除了上述的在界面設(shè)計(jì)階段所自動(dòng)建立的前綴為handles.的變量外,如果在每個(gè)函數(shù)中還需要?jiǎng)?chuàng)建新的變量,并希望這些變量值能為其它fun cti on 共享,那么在定義新變量時(shí)一定也要建立形如handles.*的變量,如本例程序中我們要用到的handles.a , handles.b ,handles.hh , handles.

32、linewidth等。明白了數(shù)據(jù)變量命名機(jī)制后,我們現(xiàn)在開(kāi)始完善我們本例的程序編寫(xiě)。1、填寫(xiě)系統(tǒng)已經(jīng)生成的my1_0pe nin gFc n函數(shù)在m文件中找到函數(shù):fun cti on my1_Ope nin gFc n( hObject, even tdata, han dies, vararg in)該函數(shù)名稱(chēng)"_”前的名字與創(chuàng)建 GUI時(shí)保存的文件名相同,“_”后的"OpeningFcn 由系統(tǒng)自動(dòng)生成,是固定不變的,開(kāi)發(fā)者也不可進(jìn)行修改,該函數(shù)用于執(zhí)行用戶(hù)所希望的程 序運(yùn)行時(shí)的matlab語(yǔ)句。本例中我希望獲取在設(shè)計(jì)階段中兩個(gè)滾動(dòng)條中設(shè)置好的當(dāng)前值作 為函數(shù)r=ac

33、os(nt+b)中的a,b,n的值在左邊大圖像窗口中繪制該函數(shù)的圖像,并作為花絮 在第二個(gè)圖像窗口中顯示名為"da nce_29.gif ”的圖像文件(該文件存放在當(dāng)前目錄下) 目前的該函數(shù)文件系統(tǒng)已經(jīng)自動(dòng)生成了兩條語(yǔ)句% Choose default comma nd line output for my1han dles.output = hObject;% Update han dies structureguidata(hObject, han dies);不要修改它們,在兩行語(yǔ)句之間插入自己的語(yǔ)句。本例中我所鍵入的語(yǔ)句和簡(jiǎn)單功能說(shuō)明如下:ha ndles.li newidt

34、h=2;%定義畫(huà)圖的線(xiàn)寬han dles.color='b'%定義畫(huà)圖的顏色han dles.a=get(ha ndles.slider1,'value');%獲取第一個(gè)滾動(dòng)條當(dāng)前值,并將其賦給變量han dles.a%注意此句的語(yǔ)法,get(界面中的控件名稱(chēng),所希望獲取的屬性名%還記得嗎?我們?cè)谠O(shè)計(jì)階段該控件的value '已經(jīng)設(shè)置為5%所以此句執(zhí)行后 han dles.a=5han dles.b=2*pi*get(ha ndles.slider2,'value');%原理與語(yǔ)法上句相同,稍有差異的是我們?cè)谠O(shè)計(jì)階段此控件的最小值和最大值

35、%分別設(shè)置為0和1,即用戶(hù)在拉動(dòng)滾動(dòng)條時(shí)此值介于0和1之間%而我們希望該函數(shù)中b值的變化在0和2*pi之間,所以對(duì)獲得的滾動(dòng)條的值%乘以2*pi以達(dá)到我們的要求,不過(guò)在設(shè)計(jì)階段該值為0,所以此句執(zhí)行后% han dles.b=0han dles .n=str2double(get(ha ndles.edit1,'stri ng');%原理和前句相同,獲取han dles.edit1的字符串內(nèi)容,設(shè)計(jì)階段設(shè)置為5%但其數(shù)據(jù)類(lèi)型為字符串,所以用 str2double函數(shù)轉(zhuǎn)化為浮點(diǎn)數(shù)賦值給han dles.nhan dles.t=li nspace(0,2*pi,1000);%對(duì)極坐

36、標(biāo)函數(shù)r=acos(nt+b)中的自變量t進(jìn)行采點(diǎn),0和2*pi之間等間距采%1000個(gè)點(diǎn)(呵呵,數(shù)目顯得比較多,辛苦計(jì)算機(jī)了)r=ha ndles.a*cos(ha ndles.b+ha ndles .n *ha ndles.t);%對(duì)函數(shù)r=acos(nt+b)由獲取的常數(shù) a,b,n計(jì)算對(duì)應(yīng)t的1000個(gè)點(diǎn)處的函數(shù)值%注意此時(shí)的變量r我沒(méi)有加前綴handles.,因?yàn)榇俗兞績(jī)H僅在該函數(shù)內(nèi)部使用%不需要其它函數(shù)共享,所以我們可以不把它放在handles結(jié)構(gòu)中x,y=pol2cart(ha ndles.t,r);%本來(lái)可以直接用polar函數(shù)畫(huà)該函數(shù)的圖像,但實(shí)驗(yàn)一中的實(shí)驗(yàn)大家也看到了會(huì)%出

37、現(xiàn)極坐標(biāo)網(wǎng)格線(xiàn),我希望不要它們,所以用 pol2cart將這組極坐標(biāo)數(shù)據(jù)轉(zhuǎn)化為直 角%坐標(biāo),后面用plot函數(shù)在直角坐標(biāo)系下畫(huà)出等效的圖像%同樣變量x,y僅僅用于本函數(shù),所以也不需要加上han dies.前綴axes(ha ndles.axesl);%用axes函數(shù)通知系統(tǒng)執(zhí)行后續(xù)畫(huà)圖操作在名為handles.axesl的圖形窗口內(nèi)% (即在設(shè)計(jì)時(shí)建立的左邊較大的圖形窗口內(nèi)畫(huà)圖)han dles.hh=plot(x,y,'li newidth',ha ndles .lin ewidth,'color',ha ndles.color);%用plot函數(shù)畫(huà)由變量ha

38、ndles.linewidth指定線(xiàn)寬的圖像,目前其值為2%注意該操作返回一個(gè)圖像指針值,將其值賦給變量han dles.hh,用于其它函數(shù)操作axis(-8.1 8.1 -8.1 8.1);%調(diào)整顯示窗口坐標(biāo)范圍axes(ha ndles.axes2);%用axes函數(shù)通知系統(tǒng)執(zhí)行后續(xù)畫(huà)圖操作在名為handles.axes2的圖形窗口內(nèi)% (即在設(shè)計(jì)時(shí)建立的右邊較大的圖形窗口內(nèi)畫(huà)圖)ha ndles.m1,ha ndles.map1=imread('da nce_29.gif,1:10);%用imread 函數(shù)讀取圖像文件dance_29.gif中的數(shù)據(jù)放入 handles.m1(

39、4維矩陣)%彩色圖像的顏色索引表放入han dles.map1 變量中%相應(yīng)的語(yǔ)法和邏輯較為復(fù)雜,如果大家有興趣,可查閱 matlab幫助系統(tǒng)中的%image processing toolbox(圖像處理工具箱)中的內(nèi)容%為與后面的語(yǔ)句相結(jié)合,大家形式上這樣理解:圖像文件da nce_29.gif作為一個(gè)%動(dòng)態(tài)圖像文件,里面包含了10張靜態(tài)文件(當(dāng)連續(xù)播放時(shí)可產(chǎn)生動(dòng)畫(huà)效果)%現(xiàn)在數(shù)據(jù)經(jīng)上條語(yǔ)句放在了 4維矩陣(試著想象一下該矩陣的組成)handles.m1 中%其中三維子陣handles.m1(:,:,:,1)放置第一張圖片信息,三維子陣%handles.m1(:,:,:,10)中依次防止了

40、 10幅其中的靜態(tài)圖片文件imshow(ha ndles.m1(:,:,:,1),ha ndles.mapl);%用imshow 函數(shù)將上述的第一幅圖像顯示在當(dāng)前的圖形窗口內(nèi)axes(ha ndles.axesl);%由于本程序運(yùn)行的后續(xù)大部分操作都在第一個(gè)圖形窗口內(nèi),所以執(zhí)行該語(yǔ)句通知系統(tǒng)%此后再出現(xiàn)的繪圖命令都放在第一個(gè)圖形窗口內(nèi),即han dles.axesl中。保存文件,此時(shí)運(yùn)行程序,結(jié)果如下圖所示。左邊圖形窗口中顯示的是a=5,b=0, n=1時(shí)極坐標(biāo)函數(shù)r=acos( nt+b)的圖像,右邊圖 形窗口中是腦白金老太婆跳舞時(shí)的一個(gè)瞬間定格畫(huà)面?,F(xiàn)在不難注意程序運(yùn)行窗口中的一點(diǎn)令人不舒

41、服的地方:兩個(gè)滾動(dòng)條下方的中央位置處還沒(méi)有滿(mǎn)足我們的要求一一顯示當(dāng)前滾動(dòng)條所處位置之值。那么我們繼續(xù)回到m文件的這個(gè)函數(shù)中,在剛剛完成的語(yǔ)句后繼續(xù)實(shí)現(xiàn)該功能:set(ha ndles.texta,'stri ng', nu m2str(ha ndles.a);%邏輯上該函數(shù)(set)的功能與前述GUI設(shè)計(jì)中對(duì)每個(gè)對(duì)象填寫(xiě)屬性值的功能一樣%唯一的差異是在程序進(jìn)行中用語(yǔ)句實(shí)現(xiàn),其語(yǔ)法為:%set(所要設(shè)置的對(duì)象變量名,屬性名,屬性值)%本語(yǔ)句是將 handles.texta 這個(gè)對(duì)象的'string'設(shè)置為變量 handles.a 的值%細(xì)節(jié)方面需注意 handle

42、s.a是數(shù)值類(lèi)型,需要用 num2str轉(zhuǎn)化為字符串set(ha ndles.textb,'stri ng', nu m2str(ha ndles.b);%與前一條語(yǔ)句功能一樣,只是所修改的對(duì)象和屬性值滿(mǎn)足我們的要求。此時(shí)再次運(yùn)行程序,界面如下,實(shí)現(xiàn)了我們的顯示目地F面介紹一下該函數(shù)內(nèi)系統(tǒng)自動(dòng)生成的語(yǔ)句guidata(hObject, han dles);的語(yǔ)法功能。為了讓程序內(nèi)的各函數(shù)共享handles數(shù)據(jù)結(jié)構(gòu)中的每個(gè)變量的最新數(shù)據(jù),在每個(gè)函數(shù)中,如果用戶(hù)修改或新定義了至少一個(gè)han dles.*變量,那么切記在該函數(shù)的最后一條語(yǔ)句中一定要寫(xiě)上該語(yǔ)句,以通知其它所有函數(shù):各位

43、函數(shù)筒子們,我在工作中修改了共享數(shù)據(jù),日后工作中請(qǐng)?jiān)L問(wèn)新的數(shù)據(jù),以免數(shù)據(jù)使用舊數(shù)據(jù)而發(fā)生錯(cuò)誤!所以在日后其它函數(shù)中別忘了加上該語(yǔ)句。現(xiàn)在我們拖拉運(yùn)行程序的滾動(dòng)條或點(diǎn)擊“跳起來(lái)”按鈕,我們會(huì)發(fā)現(xiàn)沒(méi)有所希望的響應(yīng),這是正常的,因?yàn)槲覀冞€沒(méi)有編寫(xiě)相應(yīng)的程序語(yǔ)句,下面我們開(kāi)始逐個(gè)編寫(xiě)各個(gè)對(duì)象發(fā)生交互性操作時(shí)所希望的程序相應(yīng)。2、 填寫(xiě) fun ctio n slider1_Callback(hObject, even tdata, han dies)函數(shù)體找到 m 文件中的 fun ction slider1_Callback(hObject, even tdata, han dies)書(shū)寫(xiě)下列語(yǔ)句:

44、han dles.a=get(ha ndles.slider1,'value');%獲取新的滾動(dòng)條位置值,賦給han dles.aset(ha ndles.texta,'stri ng', nu m2str(ha ndles.a)%在滾動(dòng)條下方顯示新的相應(yīng)數(shù)值r=ha ndles.a*cos(ha ndles.b+ha ndles .n *ha ndles.t);%用新的a,和已知的b,n和向量t計(jì)算新的rx,y=pol2cart(ha ndles.t,r); %轉(zhuǎn)換為直角坐標(biāo)han dles.hh=plot(x,y,'li newidth',h

45、a ndles .lin ewidth,'color',ha ndles.color);axis(-8.1 8.1 -8.1 8.1);% 調(diào)整顯示范圍guidata(hObject, handles);%通知其它函數(shù) handles結(jié)構(gòu)發(fā)生了變化如何?這些語(yǔ)句都不陌生吧?所以進(jìn)行相應(yīng)的調(diào)整時(shí)只需要簡(jiǎn)單的復(fù)制一一粘貼操 作?,F(xiàn)在重新運(yùn)行程序,拖動(dòng)第一個(gè)滾動(dòng)條,發(fā)生了什么變化?很興奮吧?3、 填寫(xiě) function slider2_Callback(hObject, eventdata, handles)函數(shù)體找到 m 文件中的 function slider2_Callback

46、(hObject, eventdata, handles)書(shū)寫(xiě)下列語(yǔ)句:han dles.b=2*pi*get(ha ndles.slider2,'value');%獲取新的滾動(dòng)條位置值,賦給handles.b,注意要乘以2*pi的set(ha ndles.textb,'stri ng', nu m2str(ha ndles.b)%在滾動(dòng)條下方顯示新的相應(yīng)數(shù)值r=ha ndles.a*cos(ha ndles.b+ha ndles .n *ha ndles.t);%用新的b,和已知的a,n和向量t計(jì)算新的rx,y=pol2cart(ha ndles.t,r);

47、%轉(zhuǎn)換為直角坐標(biāo)han dles.hh=plot(x,y,'li newidth',ha ndles .lin ewidth,'color',ha ndles.color);axis(-8.1 8.1 -8.1 8.1);%調(diào)整顯示范圍guidata(hObject, handles);% 通知其它函數(shù) handles結(jié)構(gòu)發(fā)生了變化4、 完成 function edit1_Callback(hObject, eventdata, handles)函數(shù)體找到 m 文件中的 function edit1_Callback(hObject, eventdata, ha

48、ndles)書(shū)寫(xiě)下列語(yǔ)句:han dles .n=str2double(get(ha ndles.edit1,'stri ng');r=ha ndles.a*cos(ha ndles.b+ha ndles .n *ha ndles.t);x,y=pol2cart(ha ndles.t,r);han dles.hh=plot(x,y,'li newidth',ha ndles .lin ewidth,'color',ha ndles.color);axis(-8.1 8.1 -8.1 8.1);guidata(hObject, han dles);

49、這些語(yǔ)句的語(yǔ)法和邏輯功能我們都熟悉了,就不添加注釋了。保存程序,再次運(yùn)行程序,特別是修改數(shù)據(jù)編輯窗口中的n值,觀察運(yùn)行結(jié)果。下面我們完成小花絮一一在右側(cè)的圖像窗口中讓老太婆跳舞。5、 完成 function jump_Callback(hObject, eventdata, handles)程序體找到函數(shù) fun cti on jump_Callback(hObject, even tdata, han dies)書(shū)寫(xiě)下列語(yǔ)句axes(ha ndles.axes2); %下面的繪圖操作在第二個(gè)圖形窗口中進(jìn)行for nn=0:49n=rem(nn,10)+1;%找到循環(huán)變量被10除后的余數(shù),將余

50、數(shù)加1,賦給nimshow(ha ndles.m1(:,:,:, n),ha ndles.map1);%在圖形窗口內(nèi)顯示程序運(yùn)行時(shí)四圍圖片矩陣的第n個(gè)三維矩陣數(shù)據(jù)pause(.05);%暫停 0.05 秒endaxes(ha ndles.axes1);%循環(huán)結(jié)束后通知系統(tǒng)日后繪圖操作在第一個(gè)圖形窗口內(nèi)注意到此函數(shù)中我們沒(méi)有修改handles數(shù)據(jù)結(jié)構(gòu)之值,所以不需要用guidata(hObject, han dles);通知其它函數(shù)。介紹一個(gè)編程實(shí)用小技巧,隨著GUI界面中控件的增加,m文件的function 個(gè)數(shù)也越來(lái)越多,為了快速找到自己希望的函數(shù),技巧如下:在m文件編輯器菜單欄 “陰. i

51、 ,朋一-J中的圖標(biāo)“巴”點(diǎn)擊它,會(huì)出現(xiàn)一個(gè)下拉菜單,里面列出了本 m文件中所有的函數(shù),點(diǎn)擊 自己希望的函數(shù)名,則編輯窗口中光標(biāo)會(huì)自動(dòng)跳轉(zhuǎn)到此函數(shù)頭部分。如何?很人性化吧?三、為系統(tǒng)控制添加菜單控制除了用我們已經(jīng)看到的 “按鈕”等控件增加程序的交互性手段外,也可以象我們常見(jiàn)的很多程序一樣,通過(guò)窗口頂部區(qū)域的菜單進(jìn)行程序的交互式控制。本例中我們建立兩個(gè)簡(jiǎn)單的菜單,其功能是第一個(gè)用于當(dāng)前圖像的顏色和圖形線(xiàn)寬的控制,第二個(gè)用于打開(kāi)此文檔。1、建立兩個(gè)主菜單回到GUI界面設(shè)計(jì)環(huán)境,在工具條上點(diǎn)擊“呻”(創(chuàng)建和修改用戶(hù)自己的程序菜單)圖標(biāo),打開(kāi)如下圖所示的菜單編輯器。我們可以用它們編輯兩類(lèi)菜單:“ Me

52、nu Bar ”和“ Context Menu ”(上下文菜單),本文檔只介紹前者,大家如果有性趣第二類(lèi)菜單,可以查閱matlab的幫助系統(tǒng)。連續(xù)點(diǎn)擊兩次上方的工具條中的第一個(gè)圖標(biāo),下面的窗口中增加了兩項(xiàng),如圖所示。系統(tǒng)自動(dòng)將其顯示內(nèi)容和變量名“Tag ” (這個(gè)不陌生吧?)分別命名為“ Untitiled 1和“Untitiled 2”,現(xiàn)在點(diǎn)選其中的一個(gè),如“ Untitiled 1”,編輯器右邊會(huì)出現(xiàn)該菜單的顯示和控制屬性編輯器如左圖,編輯其屬性如右圖點(diǎn)選第二個(gè)菜單項(xiàng)“ Un titled 2” ,分別設(shè)置兩個(gè)屬性如下圖。點(diǎn)擊"0K”按鈕?,F(xiàn)在保存并運(yùn)行程序,可以看到運(yùn)行窗口上

53、方出現(xiàn)了兩個(gè)菜單條,這時(shí)再查閱一下 m文件,我們會(huì)發(fā)現(xiàn)系統(tǒng)又自動(dòng)生成了兩個(gè)函數(shù)頭function m1_Callback(hObject, even tdata, han dies)function m2_Callback(hObject, even tdata, han dies)其命名邏輯是我們剛才在設(shè)計(jì)時(shí)將兩個(gè)菜單對(duì)象的的“Tag ”屬性分別修改為了ml和m2。現(xiàn)在在 function m2_Callback(hObject, eventdata, handles)下書(shū)寫(xiě)如下語(yǔ)句Win ope n( 'Matlab交互式程序設(shè)計(jì)教程及舉例.doc');保存文件,再次運(yùn)行,

54、如果當(dāng)前目錄下有該文件,則win dows系統(tǒng)接受指令,打開(kāi)該文件。2、建立第一個(gè)主菜單下分別用于控制顏色和線(xiàn)寬的兩個(gè)子菜單回到gui編輯環(huán)境,點(diǎn)擊“ Ei”圖標(biāo),再次打開(kāi)菜單編輯器,選擇第一個(gè)菜單項(xiàng)。然后連續(xù)點(diǎn)擊左上方的第二個(gè)圖標(biāo),建立該菜單的兩個(gè)子菜單項(xiàng)。分別重復(fù)1中的操作,在右方編輯窗修改它們的“Label ”和“ Tag”兩個(gè)屬性如下圖所示。對(duì)第一個(gè)子菜單項(xiàng)同樣分別建立三個(gè)子菜單項(xiàng),“Label ”屬性依次改為“1 ”、“2”、“3”,“Tag”屬性依次改為“ mill ”、“m112 ”、“m113 ” (大家自己可以任意取個(gè)性化的名字, 我命名的原則是 m代表“菜單”,“m113

55、”是第1個(gè)主菜單下的第1個(gè)子菜單下的第3個(gè) 菜單項(xiàng),這樣日后在 m文件下寫(xiě)程序時(shí)不至于混亂 );對(duì)第二個(gè)子菜單項(xiàng)同樣分別建立三個(gè) 子菜單項(xiàng),“Label ”屬性依次改為“紅色”、“綠色”、“藍(lán)色”,“Tag”屬性依次改為“m121 ”、“m122 ”、“m123 ”。注意用鼠標(biāo)點(diǎn)擊其中的名為“2”和“藍(lán)色”的兩個(gè)菜單項(xiàng)的第5個(gè)屬性前的框,出現(xiàn)“V” ,用于在程序運(yùn)行時(shí)給用戶(hù)指示當(dāng)前的畫(huà)圖操作是用線(xiàn)寬為“2”的“藍(lán)色”繪制曲線(xiàn),選擇后如圖叼恤血。修改完后菜單編輯器顯示如下圖。點(diǎn)擊“ 0K ”按鈕,結(jié)束菜單編輯。保存程序并運(yùn)行之,在程序運(yùn)行窗口中瀏覽觀察菜單和 子菜單的變化。查看 m文件,發(fā)現(xiàn)系統(tǒng)

56、又自動(dòng)生成了 8個(gè)函數(shù)頭,后續(xù)我們編程控制需要的幾個(gè)函數(shù)分別是:function m111_Callback(hObject, even tdata, han dies)fun ctio n m112_Callback(hObject, even tdata, han dles)fun ctio n m113_Callback(hObject, even tdata, han dles) fun ctio n m121_Callback(hObject, even tdata, han dies)fun ctio n m122_Callback(hObject, even tdata, han

57、 dies)fun ctio n m123_Callback(hObject, even tdata, han dles)其中前3個(gè)是用戶(hù)選擇“線(xiàn)寬”的3個(gè)菜單項(xiàng)的響應(yīng)函數(shù),后3個(gè)是用戶(hù)選擇“顏色”的3個(gè)菜單項(xiàng)的響應(yīng)函數(shù)。3、控制“線(xiàn)寬”的函數(shù)編輯在 m 文件中找到函數(shù) function m111_Callback(hObject, eventdata, handles)在其后書(shū)寫(xiě)下列語(yǔ)句han dlesin ewidth=1;set(ha ndles.hh,'li newidth',ha ndles .lin ewidth);%改變名為handles.hh的圖形的線(xiàn)寬為1set(ha ndles.m111,'checked','o n');%將該菜單項(xiàng)點(diǎn)選上

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論