官术网_书友最值得收藏!

1.1 MATLAB的特點(diǎn)及組成

1.1.1 MATLAB的發(fā)展歷史

MATLAB的產(chǎn)生和數(shù)學(xué)計(jì)算是緊密聯(lián)系在一起的。20世紀(jì)70年代中期,Cleve Moler博士及其同事在美國(guó)國(guó)家基金會(huì)的幫助下,開(kāi)發(fā)了LINPACK和EISPACK的FORTRAN語(yǔ)言子程序庫(kù)。當(dāng)時(shí),這兩個(gè)程序庫(kù)代表了矩陣運(yùn)算的最高水平。

1980年前后,時(shí)任美國(guó)新墨西哥大學(xué)計(jì)算機(jī)科學(xué)系主任的Cleve Moler教授在給學(xué)生講授線性代數(shù)課程時(shí),為了讓學(xué)生能使用這兩個(gè)子程序庫(kù),同時(shí)又不用在編程上花費(fèi)過(guò)多的時(shí)間,便著手編寫了接口程序并命名為 MATLAB(意為矩陣實(shí)驗(yàn)室),這個(gè)程序是用Fortran語(yǔ)言編寫的,盡管功能十分簡(jiǎn)單,但由于是免費(fèi)軟件,所以在多所大學(xué)里得到了廣泛使用。

20世紀(jì)80年代中期,Cleve Moler和John Little采用C語(yǔ)言重新編寫了MATLAB的核心,合作開(kāi)發(fā)了 MATLAB 第1版,大大提高了它的運(yùn)算效率。1984年,他們成立了Math-Works公司,并將MATLAB正式推向商業(yè)市場(chǎng)。

以后,MATLAB版本不斷更新。MathWorks公司于1992年推出了具有劃時(shí)代意義的4.0版,并于1993年推出了可以在Windows 3.x環(huán)境下使用的版本,使其應(yīng)用范圍越來(lái)越廣。1994年,推出的4.2版擴(kuò)充了4.0版的功能;1997年,推出的5.0版使編程更方便;1999年年初,推出的5.3版在很多方面又進(jìn)行了進(jìn)一步改進(jìn)。2001年,MathWorks公司推出了6.1版,這個(gè)版本對(duì)計(jì)算機(jī)的配置要求比較高。近來(lái)Math Works公司又推出了6.5版和7.0版,其中增加了與數(shù)字信號(hào)處理(DSP)開(kāi)發(fā)軟件的接口,同時(shí)更新了大量的工具包。因此,本書將以7.0版的MATLAB為基礎(chǔ),全面介紹MATLAB的功能和使用方法。

1.1.2 MATLAB的特點(diǎn)

一種語(yǔ)言之所以能夠如此迅速地普及和應(yīng)用,顯示出如此旺盛生命力是由于它有著不同其他語(yǔ)言的特點(diǎn)。正如C語(yǔ)言等高級(jí)語(yǔ)言使人們擺脫了需要直接對(duì)計(jì)算機(jī)硬件資源進(jìn)行操作的要求,被稱為第四代計(jì)算機(jī)語(yǔ)言的MATLAB(簡(jiǎn)稱M語(yǔ)言),利用其豐富的函數(shù)資源和工具箱資源使編程人員可以根據(jù)不同的需要選擇相應(yīng)的優(yōu)化函數(shù)而不需要編寫煩瑣的程序代碼。該軟件最突出的特點(diǎn)就是簡(jiǎn)潔的、開(kāi)放式代碼。該軟件提供了更為直觀、符合人們思維習(xí)慣的代碼。該軟件還給用戶帶來(lái)最直觀、最簡(jiǎn)潔的程序開(kāi)發(fā)環(huán)境。

與其他的計(jì)算機(jī)高級(jí)語(yǔ)言相比,MATLAB有著許多非常明顯的優(yōu)點(diǎn),介紹如下。

1.容易使用

MATLAB允許用戶以數(shù)學(xué)形式的語(yǔ)言編寫程序,用戶在命令窗口中輸入命令即可直接得出結(jié)果,這比C、Fortran和BASIC等高級(jí)語(yǔ)言都要方便得多。由于它是用C語(yǔ)言開(kāi)發(fā)的,它的流程控制語(yǔ)句與C語(yǔ)言中的相應(yīng)語(yǔ)句幾乎一致。所以,初學(xué)者只要有C語(yǔ)言的基礎(chǔ),就會(huì)很容易掌握MATLAB語(yǔ)言。

2.可以由多種操作系統(tǒng)支持

MATLAB支持多種計(jì)算機(jī)操作系統(tǒng),比如由Windows98/2000/XP以及許多不同版本的UNIX操作系統(tǒng)提供支持。而且,在一種操作系統(tǒng)下編制的程序轉(zhuǎn)移到其他的操作系統(tǒng)時(shí),程序不需要作任何修改。同樣,在一種平臺(tái)上編寫的數(shù)據(jù)文件轉(zhuǎn)移到另外的平臺(tái)時(shí),也不需要作出任何修改。因此,用戶編寫的MATLAB程序可以自由地在不同的平臺(tái)之間轉(zhuǎn)移。這給用戶帶來(lái)了很大的方便。

3.豐富的內(nèi)部函數(shù)

MATLAB的內(nèi)部函數(shù)庫(kù)提供了相當(dāng)豐富的函數(shù),這些函數(shù)可以解決許多基本問(wèn)題,如矩陣的輸入。在其他語(yǔ)言中(如 C 語(yǔ)言),要輸入矩陣,先要編寫一個(gè)矩陣的子函數(shù),而MATLAB語(yǔ)言則提供了一個(gè)人機(jī)交互的數(shù)學(xué)系統(tǒng)環(huán)境,該系統(tǒng)的基本數(shù)據(jù)結(jié)構(gòu)是矩陣,在生成矩陣對(duì)象時(shí),不要求作明確的維數(shù)說(shuō)明。與利用C語(yǔ)言或Fortran語(yǔ)言編寫數(shù)值計(jì)算的程序設(shè)計(jì)相比,利用MATLAB可以節(jié)省大量的編程時(shí)間。這給用戶節(jié)省許多的時(shí)間,使用戶能夠把自己的精力放在創(chuàng)造方面,而把煩瑣的問(wèn)題交給內(nèi)部函數(shù)來(lái)解決。

除了這些數(shù)量巨大的基本內(nèi)部函數(shù)外,MATLAB還有為數(shù)不少的工具箱。這些工具箱用于解決某些特定領(lǐng)域的復(fù)雜問(wèn)題,例如,使用Wavelet Toolbox進(jìn)行小波理論分析,或者使用Financial Toolbox來(lái)進(jìn)行金融方面的問(wèn)題的研究。同時(shí),用戶可以通過(guò)網(wǎng)絡(luò)獲取更多的MATLAB程序。

4.強(qiáng)大的圖形和符號(hào)功能

MATLAB具有強(qiáng)大的圖形處理功能,它本身帶有許多繪圖的庫(kù)函數(shù),可以很輕松地畫出各種復(fù)雜的二維和多維圖形。這些圖形可以在與運(yùn)行該程序的計(jì)算機(jī)連接的任何打印機(jī)設(shè)備上打印出來(lái),這使得MATLAB成為使技術(shù)數(shù)據(jù)可視化的杰出代表。

MATLAB也開(kāi)發(fā)了自己的符號(hào)運(yùn)算功能,用戶只需掌握MATLAB這門語(yǔ)言就幾乎可以解決學(xué)習(xí)和科研中的所有問(wèn)題。不必再專門學(xué)習(xí)一門符號(hào)運(yùn)算語(yǔ)言。同時(shí)由于有了Maple和MATLAB之間的接口,這個(gè)問(wèn)題得到了更好的解決。

5.可以自動(dòng)選擇算法

在使用其他語(yǔ)言編制程序時(shí),往往會(huì)在算法的選擇上費(fèi)一番周折。但在MATLAB里,這個(gè)問(wèn)題不復(fù)存在。MATLAB的許多功能函數(shù)都帶有算法的自適應(yīng)能力,它會(huì)根據(jù)情況自行選擇最合適的算法,這樣,當(dāng)使用其他程序時(shí),因算法選擇不當(dāng)而引起的如死循環(huán)等錯(cuò)誤,在使用MATLAB時(shí)可以在很大程度上避免。

6.與其他軟件和語(yǔ)言有良好的對(duì)接性

除了上面所提的MATLAB與Maple的連接外,MATLAB與Fortran、C和BASIC之間已經(jīng)實(shí)現(xiàn)很方便的連接。用戶只需將已有的EXE文件轉(zhuǎn)換成MEX文件即可。可見(jiàn),盡管MATLAB除自身已經(jīng)具有十分強(qiáng)大的功能之外,它還可以與其他程序和軟件實(shí)現(xiàn)很好的交流。這樣可以最大限度地利用各種資源的優(yōu)勢(shì),從而使MATLAB編制的程序能夠做到最大程度的優(yōu)化。

MATLAB也存在些不足,其不足主要體現(xiàn)在兩個(gè)方面。

首先,由于MATLAB是一種合成語(yǔ)言,因此,與一般的高級(jí)語(yǔ)言相比,用MATLAB編寫的程序運(yùn)行起來(lái)時(shí)間往往要長(zhǎng)一些。當(dāng)然,隨著計(jì)算機(jī)運(yùn)行速度的不斷提高,這個(gè)缺點(diǎn)正在逐漸弱化。而且,由于用戶在使用MATLAB編寫程序時(shí)比較節(jié)省時(shí)間,就從編寫程序到運(yùn)行完程序的總的時(shí)間來(lái)說(shuō),使用MATLAB仍然比使用其他語(yǔ)言節(jié)省時(shí)間。

其次,MATLAB這套軟件比較貴,一般的用戶可能支付不起它的高昂費(fèi)用。但是,由于MATLAB具有極高的編程效率,因此,購(gòu)買MATLAB的昂貴費(fèi)用在很大程度上可以由使用它所編寫的程序的價(jià)值抵消。所以,就性價(jià)比來(lái)說(shuō),MATLAB絕對(duì)是物有所值。即使是這樣,MATLAB 對(duì)于一般的用戶來(lái)說(shuō),仍然顯得過(guò)于昂貴。幸運(yùn)的是,MATLAB 的開(kāi)發(fā)公司還發(fā)行了一種比較便宜的MATLAB學(xué)生版,這對(duì)廣大想學(xué)習(xí)和運(yùn)用MATLAB的用戶來(lái)說(shuō),無(wú)疑是一個(gè)極好的消息。MATLAB學(xué)生版與MATLAB的基本版本幾乎一樣,可以解決很多科研和學(xué)習(xí)中遇到的問(wèn)題。

總而言之,相當(dāng)于MATLAB的優(yōu)點(diǎn)來(lái)說(shuō),它的缺點(diǎn)是微不足道的,而且,隨著MATLAB版本的不斷升級(jí),它的缺點(diǎn)已經(jīng)變得越來(lái)越不明顯。掌握MATLAB,必將給我們的學(xué)習(xí)、科研和工作帶來(lái)極大的幫助。

1.1.3 MATLAB的功能及系統(tǒng)組成

1.MATLAB的功能

1)數(shù)值計(jì)算功能

MATLAB具有出色的數(shù)值計(jì)算能力,它的計(jì)算速度快、精度高、收斂性好,而且所采用的數(shù)值計(jì)算算法都是國(guó)際公認(rèn)的最先進(jìn)的、最可靠的算法。高質(zhì)量的數(shù)值計(jì)算功能為MATLAB贏得了聲譽(yù)。

2)符號(hào)計(jì)算功能

在數(shù)學(xué)、應(yīng)用科學(xué)和工程計(jì)算領(lǐng)域,用戶往往要進(jìn)行大量的符號(hào)計(jì)算和推導(dǎo)。為了增強(qiáng)MATLAB的符號(hào)計(jì)算功能,1993年,Math Works公司向加拿大滑鐵盧大學(xué)購(gòu)買了具有強(qiáng)大符號(hào)計(jì)算能力的數(shù)學(xué)軟件Maple的使用權(quán),并以Maple的內(nèi)核作為符號(hào)計(jì)算的引擎,依靠其已有的庫(kù)函數(shù),實(shí)現(xiàn)了MATLAB的符號(hào)計(jì)算功能。

3)數(shù)據(jù)分析和可視化功能

在科學(xué)計(jì)算和研究工作中,技術(shù)人員經(jīng)常會(huì)遇到大量的原始數(shù)據(jù),而對(duì)數(shù)據(jù)的分析往往難于入手,如果能將這些數(shù)據(jù)以圖形方式顯示出來(lái),不僅使數(shù)據(jù)間的關(guān)系清晰明了,而且對(duì)于揭示其內(nèi)在本質(zhì)往往有著非常重要的作用。在后面的章節(jié)中,將詳細(xì)介紹MATLAB的繪圖功能。

4)Simulink動(dòng)態(tài)仿真功能

Simulink是MATLAB為模擬動(dòng)態(tài)系統(tǒng)而提供的一個(gè)交互式程序。Simulink允許用戶在屏幕上繪制框圖來(lái)模擬一個(gè)系統(tǒng),并動(dòng)態(tài)地控制該系統(tǒng)。采用鼠標(biāo)驅(qū)動(dòng)方式,能夠處理線性、非線性、連續(xù)、離散等多種系統(tǒng)。

MATLAB在以下的領(lǐng)域里解決各種問(wèn)題是一個(gè)十分有效的工具:

●工業(yè)研究與開(kāi)發(fā)。

●數(shù)學(xué)教學(xué),特別是線性代數(shù)。所有基本概念都能涉及。

●在數(shù)值分析和科學(xué)計(jì)算方面的教學(xué)與研究,能夠詳細(xì)地研究和比較各種算法。

●在諸如電子學(xué)、控制理論和物理學(xué)等工程和科學(xué)學(xué)科方面的教學(xué)與研究。

●在諸如經(jīng)濟(jì)學(xué)、化學(xué)和生物學(xué)等有計(jì)算問(wèn)題的所有其他領(lǐng)域中的教學(xué)與研究。

2.MATLAB的系統(tǒng)組成

MATLAB 是一種以數(shù)組和矩陣為元素的工程計(jì)算語(yǔ)言,主要包括以下幾部分:MATLAB語(yǔ)言、MATLAB工作環(huán)境、MATLAB句柄圖形控制系統(tǒng)、MATLAB數(shù)學(xué)函數(shù)庫(kù)、MATLAB工具箱和MATLAB的應(yīng)用程序接口。此外,MATLAB系統(tǒng)還提供了兩個(gè)重要部件:Simulink和Toolboxes,它們?cè)谙到y(tǒng)和用戶編程中占據(jù)著重要的地位。

1)MATLAB語(yǔ)言

MATLAB編程語(yǔ)言是一種面向科學(xué)與工程計(jì)算的高級(jí)語(yǔ)言,允許按照數(shù)學(xué)習(xí)慣的方式編寫程序。由于它符合人們思維方式的編寫模式,使得該語(yǔ)言比BASIC、Fortran、C、Pascal等高級(jí)語(yǔ)言更容易學(xué)習(xí)和應(yīng)用。MATLAB語(yǔ)言以向量和矩陣為基本的數(shù)據(jù)單元,包含流程控制語(yǔ)句(順序、選擇、循環(huán)、條件、轉(zhuǎn)移和暫停等)、大量的運(yùn)算符、豐富的函數(shù)、多種數(shù)據(jù)結(jié)構(gòu)、I/O以及面向?qū)ο缶幊獭_@些既可以滿足簡(jiǎn)單問(wèn)題的求解,也適合于開(kāi)發(fā)復(fù)雜的大型程序。MATLAB不僅是一套打好包的函數(shù)庫(kù),同時(shí)也是一種高級(jí)的、面向?qū)ο蟮木幊陶Z(yǔ)言。使用MATLAB能夠卓有成效地開(kāi)發(fā)自己的程序。MATLAB自身的許多函數(shù),實(shí)際上也包括所有的工具箱函數(shù),都是用M文件實(shí)現(xiàn)的。

2)MATLAB工作環(huán)境

MATLAB工作環(huán)境包括:變量查看器、當(dāng)前路徑選擇菜單、命令歷史記錄窗口、當(dāng)前工作空間窗口、命令控制窗口、圖形處理窗口、程序編輯器、模型編輯器、GUI 編輯器和MATLAB附帶的大量M文件。

3)MATLAB繪圖功能

MATLAB句柄圖形控制系統(tǒng)是MATLAB數(shù)據(jù)可視化的核心部分。它既包含對(duì)二維(2D)和三維(3D)數(shù)據(jù)的可視化、圖形處理、動(dòng)畫制作等高層次的繪圖命令,也包含可以修改圖形局部及編制完整圖形界面的低層次繪圖命令。這些功能可使用戶創(chuàng)建富有表現(xiàn)力的彩色圖形。可視化工具包括:曲面宣染、線框圖、偽彩圖、光源、三維等位線圖、圖像顯示、動(dòng)畫、體積可視化等。同時(shí) MATLAB 還提供了句柄圖形機(jī)制。使用該機(jī)制可對(duì)圖形進(jìn)行靈活的控制。使用GUIDE工具,可以方便地使用句柄圖形創(chuàng)建自己的圖形用戶界面(GUI)。

4)MATLAB數(shù)學(xué)函數(shù)庫(kù)

MATLAB擁有500多種數(shù)學(xué)、統(tǒng)計(jì)及工程函數(shù),可使用戶立刻實(shí)現(xiàn)所需的強(qiáng)大的數(shù)學(xué)計(jì)算功能。這些函數(shù)是由各領(lǐng)域的專家學(xué)者開(kāi)發(fā)的數(shù)值計(jì)算程序,使用了安全、成熟、可靠的算法,從而保證了最大的運(yùn)算速度和可靠的結(jié)果。MATLAB內(nèi)置的強(qiáng)大數(shù)學(xué)函數(shù)庫(kù)既包含了最基本的數(shù)學(xué)運(yùn)算函數(shù),如求和、正弦、余弦等函數(shù),也包含了豐富的復(fù)雜函數(shù),如矩陣特征值、矩陣求逆、傅里葉變換等函數(shù)。

5)MATLAB工具箱

工具箱是MATLAB的一個(gè)核心部分,在工具箱中擁有大量各學(xué)科通用的專業(yè)性很強(qiáng)的函數(shù)。為了支持不同的專業(yè)領(lǐng)域的用戶。MATLAB提供了大量的面向?qū)I(yè)領(lǐng)域的工具箱。另外,用戶也可以根據(jù)自己的需要?jiǎng)?chuàng)建自己的工具箱。函數(shù)按學(xué)科及作用等分成不同的工具箱。其中包括了完整的專業(yè)函數(shù)集,用于對(duì)信號(hào)處理、控制系統(tǒng)設(shè)計(jì)、神經(jīng)網(wǎng)絡(luò)的特殊應(yīng)用進(jìn)行分析和設(shè)計(jì)。

使用MATLAB語(yǔ)言和MATLAB工具箱,用戶可以專注于算法研究,編程只需要幾行就可以完成,而且可以很快地繪制圖形,從而迅速地進(jìn)行多種算法的比較,從中找出最好的方案。MATLAB 工具箱中的大多數(shù)函數(shù)都是通過(guò) M 文件編寫的,用戶可以查看其中的源碼。通過(guò)適當(dāng)?shù)男薷模憧梢孕纬勺约旱奶厥馑惴ā?/p>

6)MATLAB應(yīng)用程序接口

MATLAB應(yīng)用程序接口是通過(guò)MATLAB的API庫(kù)完成的。MATLAB通過(guò)對(duì)API庫(kù)函數(shù)的調(diào)用可以與其他應(yīng)用程序交換數(shù)據(jù)。同樣,用戶也可在其他語(yǔ)言中通過(guò)該接口函數(shù)庫(kù)調(diào)用 MATLAB 的程序。MATLAB 應(yīng)用程序接口中的內(nèi)容包括:實(shí)時(shí)動(dòng)態(tài)連接外部 C 或Fortran應(yīng)用函數(shù);在獨(dú)立C或Fortran程序中調(diào)用MATLAB函數(shù);I/O各種MATLAB及其他標(biāo)準(zhǔn)格式的數(shù)據(jù)文件;創(chuàng)建圖文并貌的技術(shù)文檔,包括MATLAB圖形、命令,并可通過(guò)Word輸出。

7)Simulink

Simulink是MATLAB附帶的軟件,它是對(duì)非線性動(dòng)態(tài)系統(tǒng)進(jìn)行仿真的交互式系統(tǒng)。在Simulink 交互式系統(tǒng)中,可利用直觀的方框圖構(gòu)建動(dòng)態(tài)系統(tǒng),然后采用動(dòng)態(tài)仿真的方法得到結(jié)果。

8)Toolboxes(工具箱)

針對(duì)各個(gè)應(yīng)用領(lǐng)域中的問(wèn)題,MATLAB 提供了許多實(shí)用函數(shù),稱為工具箱函數(shù)。MATLAB之所以能得到廣泛應(yīng)用,源于MATLAB眾多的工具箱函數(shù)給各個(gè)領(lǐng)域應(yīng)用人員帶來(lái)的方便。

1.1.4 MATLAB的工作空間

MATLAB工作空間包含著本次MATLAB任務(wù)過(guò)程中所建立的變量,MATLAB提供了一組命令來(lái)管理、處理這些變量,同時(shí)還提供了專門的工作空間瀏覽器。

1.工作空間瀏覽器

在MATLAB環(huán)境下,輸入命令可以在工作空間中建立一些變量,如圖1-1所示。在圖中,左上方為MATLAB的工作空間,它直觀地顯示出變量名、尺寸、占用的存儲(chǔ)空間以及變量類型。在工作空間的菜單條中,有幾個(gè)按鈕,依次為“新建變量”、“打開(kāi)變量顯示”、“裝入數(shù)據(jù)文件”、“保存工作空間”、“打印”和“刪除變量”,可以用來(lái)對(duì)工作空間中的變量進(jìn)行操作。當(dāng)選定一個(gè)變量后,可以利用“打開(kāi)變量顯示”按鈕,直觀地顯示出變量的內(nèi)容;利用“刪除變量”按鈕,可以從工作空間中刪去選定的變量;采用“保存工作空間”按鈕,可以將工作空間保存在 mat 文件中,默認(rèn)的文件名為 MATLAB.MAT;在以后打開(kāi)MATLAB窗口時(shí),可以利用“裝入數(shù)據(jù)文件”按鈕裝入所保存的工作變量。

圖1-1 工作空間瀏覽器

2.顯示、清除變量

who命令和whos命令可在命令窗口中顯示出工作空間中的變量列表。dear命令可清除工作空間中的所有變量,如果在clear之后加上變量名,則可以清除指定變量,例如:

        clear a b

只清除變量a和變量b。

3.保存和恢復(fù)工作空間

save命令可用來(lái)保存整個(gè)工作空間或者其中的一部分變量,相應(yīng)的load命令可以恢復(fù)所保存的變量。例如,save entire可將整個(gè)工作空間保存在entire.mat文件中,命令save varl x y z可將變量x、y、z保存在varl.mat文件中,這些文件均為二進(jìn)制文件,可直接由load命令得到恢復(fù),例如,load entire、load varl。

在保存變量時(shí),還可以指定文件的格式,這只需在save命令中加上適當(dāng)?shù)拈_(kāi)關(guān)選項(xiàng),如表1-1所列。

表1-1 save命令的開(kāi)關(guān)選項(xiàng)

如果指定-v4選項(xiàng),則MATLAB只能保存那些與MATLAB 4.x兼容的數(shù)據(jù)結(jié)構(gòu),即不能保存結(jié)構(gòu)、單元陣列、多維陣列及對(duì)象。如果指定ASCII碼格式,則每次只能保存一個(gè)變量。如果利用save保存多個(gè)變量,這時(shí)MATLAB也能建立ASCII碼文件,但它不能由load命令恢復(fù)。

在save和load命令中,文件名、變量名可以用字符串表示,這時(shí)將save和load看作函數(shù)來(lái)調(diào)用,例如:

            save('var2','x','y')
            s='var2';
            load(s)

等同于:

            save var2 x y
            load var2

由于采用了字符串,使得保存多個(gè)文件或讀取多個(gè)文件變得方便,例如,利用save命令產(chǎn)生從datal到datal0這樣10個(gè)文件(分別保存變量x1~x10):

            for i=1:10
            load(['data' int2str(i)])
            end

利用通配符還可以有選擇地保存或讀取變量,例如:

            save multid x*
            load multid x*98

第一行完成在multid.mat中保存所有以x開(kāi)頭的變量,第二行完成從multid.mat中讀取以x開(kāi)頭、以98結(jié)尾的所有變量,中間字符個(gè)數(shù)不限。

主站蜘蛛池模板: 迭部县| 云霄县| 高台县| 东丽区| 彭山县| 久治县| 太仓市| 钟祥市| 成都市| 荥经县| 钦州市| 雅江县| 美姑县| 舞钢市| 兴仁县| 韩城市| 工布江达县| 湖南省| 商南县| 来宾市| 青阳县| 舟山市| 灵武市| 宁海县| 鄂伦春自治旗| 方正县| 麦盖提县| 佛冈县| 胶南市| 城步| 金阳县| 西青区| 宜城市| 耿马| 海宁市| 普定县| 余干县| 肥乡县| 普兰店市| 来宾市| 临潭县|