版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一講
Matlab概述前言Matlab軟件概述Matlab的桌面環(huán)境及入門知識(shí)11/17/202011/19/20201/8/20231ApplicationofMatlab第一講Matlab概述前言11/17/202011/191.1Matlab概述內(nèi)容Matlab發(fā)展歷史Matlab產(chǎn)品家族(Matlab
familyofproducts)體系Matlab語(yǔ)言的特點(diǎn)。目的全面了解Matlab軟件包激發(fā)對(duì)Matlab軟件的學(xué)習(xí)興趣。11/17/202011/19/20201/8/20232ApplicationofMatlab1.1Matlab概述內(nèi)容11/17/202011/11.1.1MATLAB的歷史及影響
70年代中期,CleveMoler博土及其同事在美國(guó)國(guó)家基金會(huì)的幫助下,開發(fā)了LINPACK和EISPACK的FORTRAN語(yǔ)言子程序庫(kù),這兩個(gè)程序庫(kù)代表了當(dāng)時(shí)矩陣運(yùn)算的最高水平。到了70年代后期,身為美國(guó)新墨西哥州大學(xué)計(jì)算機(jī)系系主任的CIeveMoler,在給學(xué)生上線性代數(shù)課時(shí),為了讓學(xué)生能使用這兩個(gè)子程序庫(kù),同時(shí)又不用在編程上花費(fèi)過(guò)多的時(shí)間,開始著手用FORTRAN語(yǔ)言為學(xué)生編寫使用LINPACK和EISPACK的接口程序,他將這個(gè)程序取名為MATLAB,其名稱是由MATrix和LABoratory(矩陣實(shí)驗(yàn)室)兩個(gè)單詞的前三個(gè)字母所合成。在1978年,Malab就面世了。這個(gè)程序獲得了很大的成功,受到了學(xué)生的廣泛歡迎。在以后的幾年里,Matlab在多所大學(xué)里作為教學(xué)輔助軟件使用,并作為面向大眾的免費(fèi)軟件廣為流傳。CleveMoler11/17/202011/19/20201/8/20233ApplicationofMatlab1.1.1MATLAB的歷史及影響70年代中期,Cle
將MATLAB商品化的不是CleveMoler,而是一個(gè)名叫JackLittle的人。當(dāng)免費(fèi)的MATLAB軟件到Stanford大學(xué),JackLittle正在該校主修控制,便接觸到了當(dāng)時(shí)MATLAB,直覺(jué)告訴他,這是一個(gè)具有巨大發(fā)展?jié)摿Φ能浖?。因此他在畢業(yè)沒(méi)多久,就開始用C語(yǔ)言重新編寫了MATLAB的核心。在Moler的協(xié)助下,于1984年成立MathWorks公司,首次推出MATLAB商用版。在其商用版推出的初期,MATLAB就以其優(yōu)秀的品質(zhì)(高效的數(shù)據(jù)計(jì)算能力和開放的體系結(jié)構(gòu))占據(jù)了大部分?jǐn)?shù)學(xué)計(jì)算軟件的市場(chǎng),原來(lái)應(yīng)用于控制領(lǐng)域里的一些封閉式數(shù)學(xué)計(jì)算軟件包(如英國(guó)的UMIST、瑞典的LUND和SIMNON、德國(guó)的KEDDC)就紛紛被淘汰或在MATLAB上重建。JackLittle11/17/202011/19/20201/8/20234ApplicationofMatlab將MATLAB商品化的不是CleveMoler,而
CleveMoler至今仍是該公司的首席科學(xué)家,他以60多歲的高齡,還常常親自進(jìn)行撰寫程序的工作,非常令人佩服。如果你有數(shù)值運(yùn)算方面的高水平問(wèn)題,寄到MathWorks后,大部份還是會(huì)由CleveMoler親自回答。在1994年,Pentium芯片曾發(fā)生Fdiv的bug,當(dāng)時(shí)CleveMoler是第一個(gè)以軟件方式解決此bug的人,曾一時(shí)膾炙人口。
在公司初創(chuàng)的五年,JackLittle非常辛苦,常常身兼數(shù)職(董事長(zhǎng)、總經(jīng)理、推銷、程序開發(fā)等),但公司一直穩(wěn)定發(fā)展,從當(dāng)初的一人公司,到1993年的200人,到2000年的500余人,到2005年公司員工達(dá)到了1300人,不但打敗其他競(jìng)爭(zhēng)軟件,而且前景一片欣欣向榮。根據(jù)JackLittle個(gè)人說(shuō)法,MATLAB早期成功的兩大因素是:選用了C語(yǔ)言及選定PC為主要平臺(tái),這似乎和微軟的成功有相互呼應(yīng)之妙。
MathWorks公司,目前仍然是私人企業(yè),并未上市,這和JackLittle個(gè)人理念有關(guān),他認(rèn)為MATLAB的設(shè)計(jì)方向應(yīng)該一直是以顧客的需求與軟件的完整性為首要目標(biāo),而不是以盈利為主要目的,因此MATLAB一直是在穩(wěn)定中求進(jìn)步,而不會(huì)因?yàn)樯鲜卸馐芄蓶|左右其發(fā)展方向。這也是為什么MATLAB新版本總是姍姍來(lái)遲的原因,因?yàn)樗麄儾粫?huì)因?yàn)槭袌?chǎng)的需求而推出不成熟的產(chǎn)品。此外,由于JackLittle保守的個(gè)性,也使得MathWorks不曾跨足MATLAB/Simulink以外的行業(yè),當(dāng)前商場(chǎng)上紛紛擾擾的并購(gòu)或分家,MathWorks完全是絕緣體。11/17/202011/19/20201/8/20235ApplicationofMatlabCleveMoler至今仍是該公司的首席科學(xué)家,他以1992年,支持Windows3.x的MATLAB4.0版本推出,增加了Simulink,Control,NeuralNetwork,SignalProcessing等專用工具箱。
1993年11月,MathWorks公司推出了Matlab4.1,其中主要增加了符號(hào)運(yùn)算功能。當(dāng)升級(jí)至Matlab4.2c,這一功能在用戶中得到廣泛應(yīng)用。1997年,Matlab5.0版本問(wèn)世了,實(shí)現(xiàn)了真正的32位運(yùn)算,加快數(shù)值計(jì)算,圖形表現(xiàn)有效。
2001年初,MathWorks公司推出了Matlab6.0(R12)。2002年7月,推出了Matlab6.5(R13),在這一版本中Simulink升級(jí)到了5.0,性能有了很大提高,另一大特點(diǎn)是推出了JIT程序加速器,Matlab的計(jì)算速度有了明顯的提高。2005年9月,推出了MAILAB7.1(Release14SP3),在這一版本中Simulink升級(jí)到了6.3,軟件性能有了新的提高,用戶界面更加友好。值得說(shuō)明的是,MatlabV7.1版采用了更先進(jìn)的數(shù)學(xué)程序庫(kù),即“LAPACK”和“BLAS”。目前,Matlab軟件支持多種系統(tǒng)平臺(tái),如常見(jiàn)的WindowsNT/XP、UNIX、Linux等。Matlab版本的發(fā)展11/17/202011/19/20201/8/20236ApplicationofMatlab1992年,支持Windows3.x的MATLAB4.
MATLAB就是這樣經(jīng)過(guò)了近30年的專門打造、20多年的千錘百煉,它以高性能的數(shù)組運(yùn)算(包括矩陣運(yùn)算)為基礎(chǔ),不僅實(shí)現(xiàn)了大多數(shù)數(shù)學(xué)算法的高效運(yùn)行函數(shù)和數(shù)據(jù)可視化,而且提供了非常高效的計(jì)算機(jī)高級(jí)編程語(yǔ)言,在用戶可參與的情況下,各種專業(yè)領(lǐng)域的工具箱不斷開發(fā)和完善,MATLAB取得了巨大的成功,已廣泛應(yīng)用于科學(xué)研究、工程應(yīng)用,用于數(shù)值計(jì)算分析、系統(tǒng)建模與仿真。早在20世紀(jì)90年代初,歐美等發(fā)達(dá)國(guó)家的大學(xué)就將MATLAB列為一種必須掌握的編程語(yǔ)言。近幾年來(lái),國(guó)內(nèi)的很多大學(xué)也將MATLAB列為了本科生必修課程。與Maple、Mathematica數(shù)學(xué)計(jì)算軟件相比,MATLAB以數(shù)值計(jì)算見(jiàn)長(zhǎng),而Maple等以符號(hào)運(yùn)算見(jiàn)長(zhǎng),能給出解析解和任意精度解,而處理大量數(shù)據(jù)的能力遠(yuǎn)不如MATLAB。MATLAB軟件功能之強(qiáng)大、應(yīng)用之廣泛,已成為為21世紀(jì)最為重要的科學(xué)計(jì)算語(yǔ)言??梢?jiàn)學(xué)習(xí)掌握這一工具的重要性。11/17/202011/19/20201/8/20237ApplicationofMatlabMATLAB就是這樣經(jīng)過(guò)了近30年的專門打造、2
MATLAB產(chǎn)品由若干模塊組成,不同的模塊完成不同的功能,其中有:
實(shí)際上MATLAB本身就是一個(gè)極其豐富的資源庫(kù),那么應(yīng)該從哪一部分開始著手、學(xué)習(xí)使用MATLAB呢?這就有必要了解這一軟件產(chǎn)品的體系結(jié)構(gòu)。MATLABCompiler這種編譯器可以將MATLAB程序文件編譯生成標(biāo)準(zhǔn)的C/C++語(yǔ)言文件,而生成的標(biāo)準(zhǔn)的C/C++文件可以被任何一種C/C++編譯器編譯生成函數(shù)庫(kù)或可執(zhí)行文件,以提高程序的運(yùn)行效率。1.1.2MATLAB產(chǎn)品的體系結(jié)構(gòu)
MATLABMATLABToolboxesMATLABCompilerSimulinkSimulinkBlocksetsReal-TimeWorkshop(RTW)StateflowStateflowCoder由這些模塊產(chǎn)品之間的關(guān)系可以圖1.1表示。圖1.1MATLAB產(chǎn)品體系結(jié)構(gòu)圍繞著MATLAB這個(gè)計(jì)算核心,形成了諸多針對(duì)不同應(yīng)用領(lǐng)域的算法程序包,被稱為專用工具箱(Toolbox),這些工具箱的列表以及每個(gè)工具箱的使用詳見(jiàn)MATLAB在線幫助文檔。MATLAB本身所提供的工具箱大概有40多個(gè),另外還有其他公司或研究單位開發(fā)提供的工具箱,這些工具箱的總數(shù)已有100多個(gè),而且新的工具箱還在不斷增加。如果你有特別的應(yīng)用領(lǐng)域,可以首先到網(wǎng)上查找是否已有相關(guān)的工具箱,很可能已有人將你要做的應(yīng)用程序作成工具箱了。Simulink是窗口圖形方式的、專門用于連續(xù)時(shí)間或離散時(shí)間的動(dòng)態(tài)系統(tǒng)建模、分析和仿真的核心。Real-TimeWorkshop是一種實(shí)時(shí)代碼生成工具,它能夠根據(jù)Simulink模型生成程序源代碼,并打包、編譯所生成的源代碼生成實(shí)時(shí)應(yīng)用程序。
從現(xiàn)有的Simulink和Stateflow自動(dòng)生成C語(yǔ)言程序代碼的功能、定點(diǎn)運(yùn)算模塊集(Fixed-pointBlockset)與C語(yǔ)言程序代碼到VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,一種標(biāo)準(zhǔn)的硬件電路設(shè)計(jì)語(yǔ)言
)的自動(dòng)轉(zhuǎn)換功能,可以看出,高級(jí)的系統(tǒng)仿真或低級(jí)的芯片算法設(shè)計(jì),都可用MATLAB、Simulink、Stateflow及相關(guān)的工具箱來(lái)完成。Stateflow是基于有限狀態(tài)機(jī)理論針對(duì)復(fù)雜的事件驅(qū)動(dòng)系統(tǒng)進(jìn)行建模、仿真的工具。StateflowCoder是基于Stateflow狀態(tài)圖生成高效、優(yōu)化的程序代碼。圍繞著Simulink仿真核心所開發(fā)的應(yīng)用程序包,稱為模塊集(Blocksets),MATLAB產(chǎn)品提供許多專用模塊集,如CommunicationBlockset、DSPBlockset、SimPowerSystemBlockset、SignalProcessingBlockset等,詳見(jiàn)MATLAB在線幫助文檔。MATLAB是MATLAB產(chǎn)品家族的計(jì)算核心與基礎(chǔ),是集高性能數(shù)值計(jì)算與數(shù)據(jù)可視化于一體的高效編程語(yǔ)言。11/17/202011/19/20201/8/20238ApplicationofMatlabMATLAB產(chǎn)品由若干模塊組成,不同的模塊完成不同的1.1.3MATLAB編程語(yǔ)言的特點(diǎn)
語(yǔ)法規(guī)則簡(jiǎn)單。尤其內(nèi)定的編程規(guī)則,與其他編程語(yǔ)言(如C、Fortran等)相比更接近于常規(guī)數(shù)學(xué)表示。對(duì)于數(shù)組變量的使用,不需類型聲明,無(wú)需事先申請(qǐng)內(nèi)存空間。MATLAB語(yǔ)言主要有以下幾個(gè)特點(diǎn):
MATLAB基本的語(yǔ)言環(huán)境提供了數(shù)以千計(jì)的計(jì)算函數(shù),極大的提高了用戶的編程效率。如,一個(gè)fft函數(shù)即可完成對(duì)指定數(shù)據(jù)的快速傅里葉變換,這一任務(wù)如果用C語(yǔ)言來(lái)編程實(shí)現(xiàn)的話,至少要用幾十條C語(yǔ)言才能完成。
因此,MATLAB是一個(gè)簡(jiǎn)單易用、功能強(qiáng)大的高效編程語(yǔ)言。
平臺(tái)無(wú)關(guān)性(可移植性)。MATLAB軟件可以運(yùn)行在很多不同的計(jì)算機(jī)系統(tǒng)平臺(tái)上,如WindowsMe/NT/2000/XP、很多不同版本的UNIX以及Linux。無(wú)論你在哪一個(gè)平臺(tái)上編寫的程序都可以運(yùn)行在其它平臺(tái)上,對(duì)于MATLAB數(shù)據(jù)文件也一樣,是平臺(tái)無(wú)關(guān)的。極大保護(hù)了用戶的勞動(dòng)、方便了用戶。其繪圖功能也是平臺(tái)無(wú)關(guān)的。無(wú)論任何系統(tǒng)平臺(tái),只要MATLAB能夠運(yùn)行,其圖形功能命令就能正常運(yùn)行。
MATLAB是一種腳本式(scripted)的解釋型語(yǔ)言,無(wú)論是命令、函數(shù)或變量,只要在命令窗口的提示符下鍵入,并“回車(Enter)”,MATLAB都予以解釋執(zhí)行。11/17/202011/19/20201/8/20239ApplicationofMatlab1.1.3MATLAB編程語(yǔ)言的特點(diǎn)語(yǔ)法規(guī)則簡(jiǎn)單。尤功能強(qiáng)大數(shù)值運(yùn)算優(yōu)勢(shì)符號(hào)運(yùn)算優(yōu)勢(shì)(Maple)強(qiáng)大的2D、3D數(shù)據(jù)可視化功能許多具有算法自適應(yīng)能力的功能函數(shù)11/17/202011/19/20201/8/202310ApplicationofMatlab功能強(qiáng)大11/17/202011/19/20201/8/2語(yǔ)言簡(jiǎn)單、內(nèi)涵豐富語(yǔ)言及其書寫形式非常接近于常規(guī)數(shù)學(xué)書寫形式;其操作和功能函數(shù)指令就是常用的計(jì)算機(jī)和數(shù)學(xué)書上的一些簡(jiǎn)單英文單詞表達(dá)的,如:help、clear等;完備的幫助系統(tǒng),易學(xué)易用。擴(kuò)充能力、可開發(fā)能力較強(qiáng)MATLAB完全成了一個(gè)開放的系統(tǒng)用戶可以開發(fā)自己的工具箱可以方便地與Fortran、C等語(yǔ)言接口
編程易、效率高
Matlab以數(shù)組為基本計(jì)算單元具有大量的算法優(yōu)化的功能函數(shù)11/17/202011/19/20201/8/202311ApplicationofMatlab語(yǔ)言簡(jiǎn)單、內(nèi)涵豐富11/17/202011/19/20201.2MATLAB的桌面環(huán)境及入門知識(shí)啟動(dòng)與退出MATLAB命令窗口及使用數(shù)值表示、變量、表達(dá)式命令歷史窗口工作空間獲取在線幫助11/17/202011/19/20201/8/202312ApplicationofMatlab1.2MATLAB的桌面環(huán)境及入門知識(shí)啟動(dòng)與退出MATL1.2.1啟動(dòng)與退出MATLAB啟動(dòng)MATLAB直接用鼠標(biāo)雙擊桌面上MATLAB7.1圖標(biāo)或Windows桌面的“開始”—〉“所有程序”—〉“MATLAB7.1”—〉“MATLAB7.1”。退出MATLAB關(guān)閉MATLAB桌面在命令窗口執(zhí)行quit或exit命令MATLAB缺省桌面(見(jiàn)下頁(yè))11/17/202011/19/20201/8/202313ApplicationofMatlab1.2.1啟動(dòng)與退出MATLAB啟動(dòng)MATLAB11/1菜單欄工具欄文件編輯窗口工作空間歷史命令窗口Start菜單命令窗口命令提示符1.2.1啟動(dòng)與退出MATLAB(續(xù))11/17/202011/19/20201/8/202314ApplicationofMatlab菜單欄工具欄文件編輯窗口工作空間歷史命令Start菜單命令1.2.2命令窗口的使用激活命令窗口。“>>”與閃爍的光標(biāo)一起表明系統(tǒng)就緒,等待輸入。命令窗口脫離MATLAB桌面。簡(jiǎn)單計(jì)算【例2.2-1】計(jì)算(1)在MATLAB命令窗口輸入以下內(nèi)容:>>(12+2*(7-4))/3^2(2)按【Enter】鍵,指令執(zhí)行。(3)返回的計(jì)算結(jié)果:ans=2
11/17/202011/19/20201/8/202315ApplicationofMatlab1.2.2命令窗口的使用激活命令窗口。11/17/2021.2.2命令窗口(續(xù))〖說(shuō)明〗在命令窗口【Enter】鍵提交命令執(zhí)行。Matlab所用運(yùn)算符(如+、-、^等)是各種計(jì)算程序中常見(jiàn)的。計(jì)算結(jié)果中的“ans”是英文“answer”的一種縮寫,其含義就是“運(yùn)算答案”。ans是Matlab的一個(gè)預(yù)定義變量。11/17/202011/19/20201/8/202316ApplicationofMatlab1.2.2命令窗口(續(xù))〖說(shuō)明〗11/17/202011.2.2命令窗口(續(xù))簡(jiǎn)單計(jì)算(續(xù))【例2.2-2】計(jì)算sin(45?)>>sin(45*pi/180)Matalb中正弦函數(shù)sin就是常見(jiàn)的正弦函數(shù)。它的參數(shù)值是以“弧度”為單位的。pi也是Matalb的預(yù)定義變量。pi=3.14159…Matlab對(duì)字母大小寫是敏感的?!纠?.2-3】計(jì)算的值,其中x=4.92。
>>sqrt(2*exp(4.92+0.5)+1)Matalb中開平方—sqrt(x),是英文squareroot的縮寫
。Matalb中指數(shù)函數(shù)exp(x),常見(jiàn)的表達(dá)方式。ans=0.7071ans=21.278111/17/202011/19/20201/8/202317ApplicationofMatlab1.2.2命令窗口(續(xù))簡(jiǎn)單計(jì)算(續(xù))Matalb中正弦1.2.2命令窗口
(續(xù))“clc”清除窗口顯示內(nèi)容的命令?!纠?.2-4】計(jì)算的值。
>>y=2*sin(0.3*pi)/(1+sqrt(5))y=0.5000【例2.2-5】計(jì)算的值。
>>y=2*cos(0.3*pi)/(1+sqrt(5))y=0.3633命令行編輯“↑”鍵調(diào)回已輸入過(guò)命令。修改。11/17/202011/19/20201/8/202318ApplicationofMatlab1.2.2命令窗口(續(xù))“clc”清除窗口顯示內(nèi)容的命令1.2.2命令窗口
(續(xù))【例2.2-5】計(jì)算半徑為5.2m的圓的周長(zhǎng)和面積。>>radius=5.2;%圓的半徑>>area=pi*5.2^2,
circle_len=2*pi*5.2area=84.9487circle_len=32.6726以上兩例,命令行中用到了等號(hào)“=”。計(jì)算結(jié)果不再賦給“ans”,而是賦給用戶指定的變量y、area、circle_len。無(wú)論是預(yù)定義變量還是用戶自定義變量都被存儲(chǔ)在系統(tǒng)的工作空間內(nèi),即系統(tǒng)定義的一個(gè)存儲(chǔ)窗口變量的內(nèi)存空間。Who、whos命令用來(lái)顯示工作空間的變量clear命令用來(lái)清除工作空間的變量。11/17/202011/19/20201/8/202319ApplicationofMatlab1.2.2命令窗口(續(xù))【例2.2-5】計(jì)算半徑為5.21.2.2命令窗口(續(xù))>>who>>whosYourvariablesare:anscircle_lenyarearadius
NameSizeBytesClassans1x18doublearrayarea1x18doublearraycircle_len1x18doublearrayradius1x18doublearrayy1x18doublearrayGrandtotalis5elementsusing40bytes11/17/202011/19/20201/8/202320ApplicationofMatlab1.2.2命令窗口(續(xù))>>who>>whosYour1.2.2命令窗口
(續(xù))>>cleary>>whoYourvariablesare:anscircle_lenarearadius
>>clearansarea>>whosYourvariablesare:NameSizeBytesClasscircle_len1x18doublearrayradius1x18doublearrayGrandtotalis2elementsusing16bytes11/17/202011/19/20201/8/202321ApplicationofMatlab1.2.2命令窗口(續(xù))>>clearyYourva1.2.2命令窗口
(續(xù))數(shù)值顯示格式設(shè)置缺省顯示格式:簡(jiǎn)潔的短(shortg)格式窗口命令及語(yǔ)法格式:format顯示格式關(guān)鍵字如:formatlong%15位數(shù)字顯示常見(jiàn)通用命令命令 含義clc 清除命令窗口的顯示內(nèi)容clear 清除Matlab工作空間中保存的變量who或whos 顯示Matlab工作空間中的變量信息dir 顯示當(dāng)前工作目錄的文件和子目錄清單cd 顯示或設(shè)置當(dāng)前工作目錄type 顯示指定m文件的內(nèi)容help或doc 獲取在線幫助quit或exit 關(guān)閉/推出MATALB11/17/202011/19/20201/8/202322ApplicationofMatlab1.2.2命令窗口(續(xù))數(shù)值顯示格式設(shè)置11/17/21.2.3工作空間查看工作空間內(nèi)存變量,可以由who、whos。命名新變量。修改變量名刪除變量繪圖保存變量數(shù)據(jù)裝入數(shù)據(jù)11/17/202011/19/20201/8/202323ApplicationofMatlab1.2.3工作空間查看工作空間內(nèi)存變量,可以由who、1.2.4歷史窗口歷史窗口:首先記錄每次啟動(dòng)時(shí)間并記錄在命令窗口輸入命令,此次運(yùn)行期間,輸入的所有命令被記錄為一組,并以此次啟動(dòng)時(shí)間為標(biāo)志。使用歷史窗口:可以查看命令窗口輸入過(guò)的命令或語(yǔ)句可以選擇一條或多條命令執(zhí)行拷貝、執(zhí)行、創(chuàng)建M文件等。要清除歷史記錄,可以選擇Edit菜單中的ClearCommandHistory命令11/17/202011/19/20201/8/202324ApplicationofMatlab1.2.4歷史窗口歷史窗口:要清除歷史記錄,可以選擇Edi當(dāng)前目錄窗口:指Matlab運(yùn)行時(shí)的工作目錄。只有在當(dāng)前目錄和搜索路徑下的文件、函數(shù)才可以被運(yùn)行和調(diào)用。如果沒(méi)有特殊指明,數(shù)據(jù)文件也將存放在當(dāng)前目錄下;用戶可以將自己的工作目錄設(shè)置成當(dāng)前目錄,從而使得所有操作都在當(dāng)前目錄中進(jìn)行。1.2.5當(dāng)前目錄窗口和搜索路徑11/17/202011/19/20201/8/202325ApplicationofMatlab當(dāng)前目錄窗口:指Matlab運(yùn)行時(shí)的工作目錄。1.2.5當(dāng)搜索路徑:指Matlab執(zhí)行過(guò)程中對(duì)變量、函數(shù)和文件進(jìn)行搜索的路徑。在File菜單中選擇SetPath命令或在命令窗口輸入pathtool命令,出現(xiàn)搜索路徑設(shè)置對(duì)話框:!修改完搜索路徑后,需要進(jìn)行保存。1.2.5當(dāng)前目錄窗口和搜索路徑(續(xù))11/17/202011/19/20201/8/202326ApplicationofMatlab搜索路徑:指Matlab執(zhí)行過(guò)程中對(duì)變量、函數(shù)和文件進(jìn)行搜索1.2.6獲取在線幫助MATLAB提供的幫助信息有兩類簡(jiǎn)單純文本幫助信息helplookfor(條件比較寬松)例:inverse窗口式綜合幫助信息(文字、公式、圖形)dochelpwin11/17/202011/19/20201/8/202327ApplicationofMatlab1.2.6獲取在線幫助MATLAB提供的幫助信息有兩類【功能演示-1】求方程的全部根。p=[2,0,-3,71,-9,13];%建立多項(xiàng)式系數(shù)向量x=roots(p);求根x=-3.49141.6863+2.6947i1.6863-2.6947i0.0594+0.4251i0.0594-0.4251i11/17/202011/19/20201/8/202328ApplicationofMatlab【功能演示-1】求方程的全部根。p=[2,0,-3,71【功能演示-2】求解線性方程組a=[2,3,-1;8,2,3;45,3,9];%建立系數(shù)矩陣ab=[2;4;23];%建立列向量bx=inv(a)*bx=0.55310.2051-0.278411/17/202011/19/20201/8/202329ApplicationofMatlab【功能演示-2】求解線性方程組a=[2,3,-1;8,2symsxyz
%建立符號(hào)變量[x,y,z]=solve(2*x+3*y-z-2,8*x+2*y+3*z-4,45*x+3*y+9*z-23)x=151/273y=8/39z=-76/273符號(hào)計(jì)算11/17/202011/19/20201/8/202330ApplicationofMatlabsymsxyz%建立符號(hào)變量x=符號(hào)計(jì)算11【功能演示-3】求解定積分
求解I=quad('x.*log(1+x)',0,1)ans=0.250或symsxnt(x*log(1+x),0,1)ans=1/411/17/202011/19/20201/8/202331ApplicationofMatlab【功能演示-3】求解定積分求解I=11/17/2020【功能演示-4】多項(xiàng)式曲線擬合考慮如下x-y一組實(shí)驗(yàn)數(shù)據(jù):x=[1,2,3,4,5,6,7,8,9,10]y=[1.2,3,4,4,5,4.7,5,5.2,6,7.2]注:一次多項(xiàng)式擬合:p1=polyfit(x,y,1)三次多項(xiàng)式擬合:p3=polyfit(x,y,3)plot原始數(shù)據(jù)、一次擬合曲線和三次擬合曲線x2=1:0.1:10;y1=polyval(p1,x2)y3=polyval(p3,x2)plot(x,y,’*’,x2,y1,‘:’,x2,y3)11/17/202011/19/20201/8/202332ApplicationofMatlab【功能演示-4】多項(xiàng)式曲線擬合考慮如下x-y一組實(shí)驗(yàn)數(shù)據(jù)由圖可見(jiàn),三次擬合結(jié)果較好。擬合曲線圖11/17/202011/19/20201/8/202333ApplicationofMatlab由圖可見(jiàn),三次擬合結(jié)果較好。擬合曲線圖11/17/2020第2講Matlab數(shù)據(jù)及其運(yùn)算
Matlab數(shù)據(jù)類型非常豐富,除數(shù)值型、字符型等基本數(shù)據(jù)類型外,還有結(jié)構(gòu)體、單元等更為復(fù)雜的數(shù)據(jù)類型。各種數(shù)據(jù)類型都以矩陣形式存在,矩陣是Matlab最基本的數(shù)據(jù)對(duì)象,并且矩陣的運(yùn)算是定義在復(fù)數(shù)域上的。1/8/202334第2講Matlab數(shù)據(jù)及其運(yùn)算Matlab數(shù)據(jù)類型2.1數(shù)值表示、變量及表達(dá)式數(shù)值的記述Matlab的數(shù)只采用習(xí)慣的十進(jìn)制表示,可以帶小數(shù)點(diǎn)和負(fù)號(hào);其缺省的數(shù)據(jù)類型為雙精度浮點(diǎn)型(double)。例如:3-100.0011.3e101.256e-6變量命令規(guī)則變量名、函數(shù)名對(duì)字母的大小寫是敏感的。如myVar與myvar表示兩個(gè)不同的變量。變量名第一個(gè)字母必須是英文字母。變量名可以包含英文字母、下劃線和數(shù)字。變量名不能包含空格、標(biāo)點(diǎn)。變量名最多可包含63個(gè)字符(6.5及以后的版本)。11/17/202011/19/20201/8/202335ApplicationofMatlab2.1數(shù)值表示、變量及表達(dá)式數(shù)值的記述11/17/2022.1數(shù)值表示、變量及表達(dá)式(續(xù))Matlab預(yù)定義的變量變量名意義ans最近的計(jì)算結(jié)果的變量名epsMATLAB定義的正的極小值=2.2204e-16pi圓周率πinf∞值,無(wú)限大i或j虛數(shù)單元,sqrt(-1)NaN非數(shù),0/0、∞/∞〖說(shuō)明〗每當(dāng)MATLAB啟動(dòng)完成,這些變量就被產(chǎn)生。MATLAB中,被0除不會(huì)引起程序中斷,給出報(bào)警的同時(shí)用inf或NaN給出結(jié)果。用戶只能臨時(shí)覆蓋這些預(yù)定義變量的值,Clear或重啟MATLAB可恢復(fù)其值。11/17/202011/19/20201/8/202336ApplicationofMatlab2.1數(shù)值表示、變量及表達(dá)式(續(xù))Matlab預(yù)定義的變2.1數(shù)值表示、變量及表達(dá)式(續(xù))運(yùn)算符和表達(dá)式運(yùn)算數(shù)學(xué)表達(dá)式MATLAB運(yùn)算符MATLAB表達(dá)式加a+b+a+b減a-b-a-b乘axb*a*b除a/b或a\b/或\a/b或a\b冪^a^b〖說(shuō)明〗Matlab用“\”和”/”分別表示“左除”和“右除”。對(duì)標(biāo)量而言,兩者沒(méi)有區(qū)別。對(duì)矩陣產(chǎn)生不同影響。MATLAB表達(dá)式的書寫規(guī)則與“手寫方式”幾乎完全相同。表達(dá)式按與常規(guī)相同的優(yōu)先級(jí)自左至右執(zhí)行運(yùn)算。優(yōu)先級(jí):指數(shù)運(yùn)算級(jí)別最高,乘除次之,加減最低。括號(hào)改變運(yùn)算的次序。11/17/202011/19/20201/8/202337ApplicationofMatlab2.1數(shù)值表示、變量及表達(dá)式(續(xù))運(yùn)算符和表達(dá)式運(yùn)算數(shù)學(xué)表2.1數(shù)值表示、變量及表達(dá)式(續(xù))復(fù)數(shù)及其運(yùn)算MATLAB中復(fù)數(shù)的表達(dá):z=a+bi,其中a、b為實(shí)數(shù)。MATLAB把復(fù)數(shù)作為一個(gè)整體,象計(jì)算實(shí)數(shù)一樣計(jì)算復(fù)數(shù)?!纠?.3-1】復(fù)數(shù)z1=3+4i,z2=1+2i,z3=,計(jì)算z1=3+4*i,z2=1+2*i,z3=exp(i*pi/6),z=z1*z2/z3z_real=real(z),z_image=imag(z),z_angle=angle(z),z_length=abs(z),11/17/202011/19/20201/8/202338ApplicationofMatlab2.1數(shù)值表示、變量及表達(dá)式(續(xù))復(fù)數(shù)及其運(yùn)算【例2.32.2Matlab矩陣(數(shù)組)的表示數(shù)組的概念一維數(shù)組變量的創(chuàng)建二維數(shù)組變量的創(chuàng)建數(shù)組元素的標(biāo)識(shí)與尋訪數(shù)組運(yùn)算多維數(shù)組11/17/202011/19/20201/8/202339ApplicationofMatlab2.2Matlab矩陣(數(shù)組)的表示數(shù)組的概念11/172.2.1.數(shù)組(array)的概念數(shù)組定義:按行(row)和列(column)順序排列的實(shí)數(shù)或復(fù)數(shù)的有序集,被稱為數(shù)組。數(shù)組中的任何一個(gè)數(shù)都被稱為這個(gè)數(shù)組的元素,由其所在的行和列標(biāo)識(shí),這個(gè)標(biāo)識(shí)也稱為數(shù)組元素的下標(biāo)或索引。Matlab將標(biāo)量視為1×1的數(shù)組。對(duì)m行、n列的2維數(shù)組a:計(jì)為m×n的數(shù)組a;*行標(biāo)識(shí)、列標(biāo)識(shí)均從1開始;行標(biāo)識(shí)從上到下遞增;列標(biāo)識(shí)從左到右遞增。12345222232425332333435442434445a(3,4)=34rowisfirsta=11/17/202011/19/20201/8/202340ApplicationofMatlab2.2.1.數(shù)組(array)的概念數(shù)組定義:123452數(shù)組的分類一維數(shù)組,也稱為向量(vector)。行向量(rowvector)、列向量(columnvector)。二維數(shù)組(矩陣matrix)。多維數(shù)組。有效矩陣:每行元素的個(gè)數(shù)必須相同,每列元素的個(gè)數(shù)也必須相同。2.2.1.數(shù)組(array)的概念11/17/202011/19/20201/8/202341ApplicationofMatlab數(shù)組的分類2.2.1.數(shù)組(array)的概念11/172.2.1、數(shù)組(array)的概念(續(xù))行向量列向量a(2,1)=3a(1,2)=2b(3)=3c(2)=211/17/202011/19/20201/8/202342ApplicationofMatlab2.2.1、數(shù)組(array)的概念(續(xù))行向量列向量a(2.2.2、創(chuàng)建一維數(shù)組變量第一種方法:使用方括號(hào)“[]”操作符【例2-1】創(chuàng)建數(shù)組(行向量)a=[13pi3+5i]>>a=[13pi3+5*i]%ora=[1,3,pi,3+5*i]
a=1.00003.00003.14163.0000+5.0000i所有的向量元素必須在操作符“[]”之內(nèi);向量元素間用空格或英文的逗點(diǎn)“,”分開。第二種方法:使用冒號(hào)“:”操作符【例2-2】創(chuàng)建以1~10順序排列整數(shù)為元素的行向量b。>>b=1:10b=1234567891011/17/202011/19/20201/8/202343ApplicationofMatlab2.2.2、創(chuàng)建一維數(shù)組變量第一種方法:使用方括號(hào)“[]”2.2.2、創(chuàng)建一維數(shù)組變量(續(xù))【例2-3】鍵入并執(zhí)行c=1:2:10和d=1:2:9>>c=1:2:10c=13579>>d=1:2:9d=13579利用冒號(hào)“:”操作符創(chuàng)建行向量的基本語(yǔ)法格式:x=Start:Increment:EndStart表示新向量x的第一個(gè)元素;新向量x的最后一個(gè)元素不能大于End;Increment可正可負(fù),若負(fù),則必須Start>End;若正,則必須Start<End,否則創(chuàng)建的為空向量。若Increment=1,則可簡(jiǎn)寫為:x=Start:End。11/17/202011/19/20201/8/202344ApplicationofMatlab2.2.2、創(chuàng)建一維數(shù)組變量(續(xù))【例2-3】鍵入并執(zhí)行c=2.2.2、創(chuàng)建一維數(shù)組變量(續(xù))第三種方法:利用函數(shù)linspace函數(shù)linspace的基本語(yǔ)法x=linspace(x1,x2,n)該函數(shù)生成一個(gè)由n個(gè)元素組成的行向量;x1為其第一個(gè)元素;x2為其最后一個(gè)元素;x1、x2之間元素的間隔=(x2-x1)/(n-1)。如果忽略參數(shù)n,則系統(tǒng)默認(rèn)生成100個(gè)元素的行向量。【例2-4】鍵入并執(zhí)行x=linspace(1,2,5)x=1.00001.25001.50001.75002.0000同學(xué)們可以在實(shí)驗(yàn)時(shí)察看x=linspace(1,2)執(zhí)行結(jié)果。11/17/202011/19/20201/8/202345ApplicationofMatlab2.2.2、創(chuàng)建一維數(shù)組變量(續(xù))第三種方法:利用函數(shù)lin2.2.2、創(chuàng)建一維數(shù)組變量(續(xù))第四種方法:利用函數(shù)logspace通過(guò)實(shí)驗(yàn)認(rèn)識(shí)該函數(shù)的功能。列向量的創(chuàng)建使用方括號(hào)“[]”操作符,使用分號(hào)“;”分割行?!纠?-5】鍵入并執(zhí)行x=[1;2;3]X=123使用冒號(hào)操作符【例2-6】鍵入并執(zhí)行x=(1:3)’%“’”表示矩陣的轉(zhuǎn)置11/17/202011/19/20201/8/202346ApplicationofMatlab2.2.2、創(chuàng)建一維數(shù)組變量(續(xù))第四種方法:利用函數(shù)log2.2.2、創(chuàng)建一維數(shù)組變量
(續(xù))創(chuàng)建數(shù)組變量的一般方法創(chuàng)建變量的賦值語(yǔ)句的一般格式var=expressionvar為變量名expression為MATLAB合法表達(dá)式可以是單獨(dú)的常數(shù)值或數(shù)值數(shù)組;也可以由常數(shù)值、其他變量(部分或全部)、數(shù)值數(shù)組和運(yùn)算符(+、-等)構(gòu)成?!纠?-7】鍵入并執(zhí)行a=[01+6];b=[a67];c=[6a7];d=[6a7a];11/17/202011/19/20201/8/202347ApplicationofMatlab2.2.2、創(chuàng)建一維數(shù)組變量(續(xù))創(chuàng)建數(shù)組變量的一般方法2.2.2、創(chuàng)建一維數(shù)組變量
(續(xù))一旦被創(chuàng)建,變量就被存儲(chǔ)在工作空間,可以通過(guò)“Workspace”窗口或在“CommandWindow”執(zhí)行“whos”命令察看。操作一:使用“Workspace”窗口察看變量操作二:使用“whos”命令察看變量11/17/202011/19/20201/8/202348ApplicationofMatlab2.2.2、創(chuàng)建一維數(shù)組變量(續(xù))一旦被創(chuàng)建,變量就被存儲(chǔ)2.2.3、創(chuàng)建二維數(shù)組變量第一種方法:使用方括號(hào)“[]”操作符使用規(guī)則數(shù)組元素必須在“[]”內(nèi)鍵入;行與行之間須用分號(hào)“;”間隔,也可以在分行處用回車鍵間隔;行內(nèi)元素用空格或逗號(hào)“,”間隔?!纠?-1】鍵入并執(zhí)行a2=[123;456;789]a2=123456789【例3-2】鍵入并執(zhí)行a2=[1:3;4:6;7:9]%結(jié)果同上11/17/202011/19/20201/8/202349ApplicationofMatlab2.2.3、創(chuàng)建二維數(shù)組變量第一種方法:使用方括號(hào)“[]”2.2.3、創(chuàng)建二維數(shù)組變量(續(xù))【例3-3】由向量構(gòu)成二維數(shù)組。>>a=[123];b=[234];>>c=[a;b];>>c1=[ab];第二種方法:函數(shù)方法函數(shù)ones(生成全1矩陣)、zeros(生成全0矩陣)、reshape“helpelmat”獲得基本的矩陣生成和操作函數(shù)列表【例3-4】創(chuàng)建全1的3x3數(shù)組。>>ones(3)【例3-5】創(chuàng)建全1的3x4數(shù)組。>>ones(3,4)11/17/202011/19/20201/8/202350ApplicationofMatlab2.2.3、創(chuàng)建二維數(shù)組變量(續(xù))【例3-3】由向量構(gòu)成二維2.2.3、創(chuàng)建二維數(shù)組變量(續(xù))【例3-5】reshape的使用演示>>a=-4:4a=-4-3-2-101234>>b=reshape(a,3,3)b=-4-12-303-214數(shù)組元素的排列順序,從上到下按列排列,先排第一列,然后第二列,…要求數(shù)組的元素總數(shù)不變。11/17/202011/19/20201/8/202351ApplicationofMatlab2.2.3、創(chuàng)建二維數(shù)組變量(續(xù))【例3-5】reshap2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪數(shù)組元素的標(biāo)識(shí)“全下標(biāo)(index)”標(biāo)識(shí)經(jīng)典數(shù)學(xué)書采用“全下標(biāo)”標(biāo)識(shí)法:每一維對(duì)應(yīng)一個(gè)下標(biāo)。如對(duì)于二維數(shù)組,用“行下標(biāo)和列下標(biāo)”標(biāo)識(shí)數(shù)組的元素,a(2,3)就表示二維數(shù)組a的“第2行第3列”的元素。對(duì)于一維數(shù)組,用一個(gè)下標(biāo)即可,b(2)表示一維數(shù)組b的第2個(gè)元素,無(wú)論b是行向量還是列向量。“單下標(biāo)”(linearindex)標(biāo)識(shí)所謂“單下標(biāo)”標(biāo)識(shí)就是用一個(gè)下標(biāo)來(lái)表明元素在數(shù)組的位置。對(duì)于二維數(shù)組,“單下標(biāo)”編號(hào):設(shè)想把二維數(shù)組的所有列,按先后順序首尾相接排成“一維長(zhǎng)列”,然后自上往下對(duì)元素位置執(zhí)行編號(hào)。兩種“下標(biāo)”標(biāo)識(shí)的變換:sub2ind、ind2sub11/17/202011/19/20201/8/202352ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪數(shù)組元素的標(biāo)識(shí)11/17/2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例4-1】單下標(biāo)的使用>>a=zeros(2,5);>>a(:)=-4:5a=-4-2024-3-1135注意數(shù)組的排列順序。11/17/202011/19/20201/8/202353ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例4-1】單下標(biāo)的2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))元素與子數(shù)組的尋訪與賦值【例4-3】一維數(shù)組元素與子數(shù)組的尋訪與賦值>>a=linspace(1,10,5)a=1.00003.25005.50007.750010.0000>>a(3)%尋訪a的第3個(gè)元素ans=5.5000>>a([125])%尋訪a的第1、2、5個(gè)元素組成的子數(shù)組ans=1.00003.250010.000011/17/202011/19/20201/8/202354ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))元素與子數(shù)組的尋訪與2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a(1:3)%尋訪前3個(gè)元素組成的子數(shù)組ans=1.00003.25005.5000>>a(3:-1:1)%由前3個(gè)元素倒序構(gòu)成的子數(shù)組ans=5.50003.25001.0000>>a(3:end)ans=5.50007.750010.0000>>a(3:end-1)ans=5.50007.7500%第3個(gè)及其后所有元素構(gòu)成的子數(shù)組函數(shù)end作為參數(shù)使用,返回最后一個(gè)元素的下標(biāo)11/17/202011/19/20201/8/202355ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a(1:3)>>a([12355321])ans=1.00003.25005.500010.000010.00005.50003.25001.0000數(shù)組元素可以被任意重復(fù)訪問(wèn),構(gòu)成長(zhǎng)度大于原數(shù)組的新數(shù)組。>>a(6)???Indexexceedsmatrixdimensions.下標(biāo)值超出了數(shù)組的維數(shù),導(dǎo)致錯(cuò)誤>>a(2.1)???Subscriptindicesmusteitherberealpositiveintegersorlogicals.下標(biāo)值只能取正整數(shù)或邏輯值2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))11/17/202011/19/20201/8/202356ApplicationofMatlab>>a([12355321])2.2.4、2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a(3)=0%修改數(shù)組a的第3元素值為0a=1.00003.250007.750010.0000>>a([25])=[11]a=1.00001.000007.75001.0000可以修改指定數(shù)組元素的值一次可以修改多個(gè)數(shù)組元素的值要修改的數(shù)組元素的個(gè)數(shù)應(yīng)與送入數(shù)組的元素個(gè)數(shù)相同11/17/202011/19/20201/8/202357ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a(3)=02.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例4-3】二維數(shù)組元素與子數(shù)組的尋訪與賦值>>a_2=zeros(2,4)%創(chuàng)建2x4的全0數(shù)組a_2=00000000>>a_2(:)=1:8a_2=13572468>>a_2([258])%單下標(biāo)方式尋訪多個(gè)元素ans=258注意元素的排列順序11/17/202011/19/20201/8/202358ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例4-3】二維數(shù)組2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a_2([258])=[102030]a_2gt;>a_2(:,[23])=ones(2)%雙下標(biāo)方式尋訪并修改a_2=1117101130二維數(shù)組可以“單下標(biāo)”方式或“全下標(biāo)”方式訪問(wèn)、賦值;“單下標(biāo)”方式賦值時(shí),等號(hào)兩邊涉及的元素個(gè)數(shù)必須相等;“全下標(biāo)”方式賦值時(shí),等號(hào)右邊數(shù)組的大小必須等于原數(shù)組中涉及元素構(gòu)成的子數(shù)組的大小。11/17/202011/19/20201/8/202359ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a_2([22.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a_2(:,end)ans=730>>a_2(:,end-1)ans=11>>a_2(:,end:-1:3)ans=71301>>a_2(end,:)ans=101130>>a_2(end,[2:4])ans=1130>>a_2([46])=6:7a_2=1117106730>>a_2(end,[2:end-1])
Whatistheresult?11/17/202011/19/20201/8/202360ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))>>a_2(:,e2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例4-4】
size、length函數(shù)>>a=ones(4,6)*6>>m=size(a)>>len=length(a)>>b=1:5;>>length(b)>>c=b’>>length(c)
size函數(shù)返回變量的大小,即變量數(shù)組的行列數(shù)length函數(shù)返回變量數(shù)組的最大維數(shù)11/17/202011/19/20201/8/202361ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))【例4-4】siz2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))雙下標(biāo)到單下標(biāo)的轉(zhuǎn)換【例4-5】
sub2ind函數(shù)-雙下標(biāo)轉(zhuǎn)換為單下標(biāo)>>A=[172418;222714;461320];>>A(:,:,2)=A-10>>A(2,1,2)>>sub2ind(size(A),2,1,2)>>A(14)11/17/202011/19/20201/8/202362ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))雙下標(biāo)到單下標(biāo)的轉(zhuǎn)換2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))單下標(biāo)到雙下標(biāo)的轉(zhuǎn)換【例4-6】
ind2sub函數(shù)-雙下標(biāo)轉(zhuǎn)換為單下標(biāo)>>b=zeros(3);>>b(:)=1:9>>IND=[3456]>>[I,J]=ind2sub(size(b),IND)11/17/202011/19/20201/8/202363ApplicationofMatlab2.2.4、數(shù)組元素的標(biāo)識(shí)與尋訪(續(xù))單下標(biāo)到雙下標(biāo)的轉(zhuǎn)換2.2.5、多維數(shù)組多維數(shù)組的定義
在MATLAB的數(shù)據(jù)類型中,向量可視為一維數(shù)組,矩陣可視為二維數(shù)組,對(duì)于維數(shù)(Dimensions)超過(guò)2
的數(shù)組均可視為「多維數(shù)組」(MultidimesionalArrays,簡(jiǎn)稱N-DArrays)。11/17/202011/19/20201/8/202364ApplicationofMatlab2.2.5、多維數(shù)組多維數(shù)組的定義11/17/2020112.2.5、多維數(shù)組(續(xù))將兩個(gè)二維(平面)數(shù)組疊在一起,就構(gòu)成三維數(shù)組,第三維稱為「頁(yè)」(Page),如下圖所示:
(3,4)
(3,1) (3,2)(3,3)(2,4)(2,3)(2,2)(2,1)(1,4)(1,3)(1,2)(1,1)(1,1)(1,2)(1,3)(1,4)(2,1)(2,2)(2,3)(2,4)(3,1)(3,2)(3,3)(3,4)頁(yè)列頁(yè)行11/17/202011/19/20201/8/202365ApplicationofMatlab2.2.5、多維數(shù)組(續(xù))將兩個(gè)二維(平面)數(shù)組疊在一起,2.2.5、多維數(shù)組(續(xù))三維數(shù)組,可對(duì)應(yīng)至一個(gè)X-Y-Z三維立體坐標(biāo),如下圖所示:
Z(頁(yè))Y(列)X(行)11/17/202011/19/20201/8/202366ApplicationofMatlab2.2.5、多維數(shù)組(續(xù))三維數(shù)組,可對(duì)應(yīng)至一個(gè)X-2.2.5、多維數(shù)組(續(xù))三維數(shù)組元素的尋址:可以(行、列、頁(yè))來(lái)確定。以維數(shù)為3×4×2的三維數(shù)組為例,其尋址方式如下圖所示:數(shù)組
A是三維數(shù)組,其中A(:,:,1)代表第一頁(yè)的二維數(shù)組,A(:,:,2)代表第二頁(yè)的二維數(shù)組。11/17/202011/19/20201/8/202367ApplicationofMatlab2.2.5、多維數(shù)組(續(xù))三維數(shù)組元素的尋址:可以(行、列2.2.5、多維數(shù)組(續(xù))多維數(shù)組的建立建立一個(gè)簡(jiǎn)單的多維數(shù)組,可直接由MATLAB命令視窗內(nèi)輸入(使用“[]”操作符)例:由兩個(gè)相同大小二維數(shù)組創(chuàng)建三維數(shù)組A(:,:,1)=[1025;4187;3263];A(:,:,2)=[3541;2621;4230]
A(:,:,1)=102541873263A(:,:,2)=354126214230
11/17/202011/19/20201/8/202368ApplicationofMatlab2.2.5、多維數(shù)組(續(xù))多維數(shù)組的建立A(:,:,1執(zhí)行命令:whosA,得到如下結(jié)果:
NameSizeBytesClassA3x4x2192doublearrayGrandtotalis24elementsusing192bytes2.2.5、多維數(shù)組(續(xù))11/17/202011/19/20201/8/202369ApplicationofMatlab執(zhí)行命令:whosA,得到如下結(jié)果:2.2.5、多維數(shù)組2.2.6、數(shù)組的算術(shù)運(yùn)算MATLAB數(shù)組支持線性代數(shù)中所有的矩陣運(yùn)算。建立特有的數(shù)組運(yùn)算符,如:“.*”、“./”等。
MATLAB數(shù)組運(yùn)算符列表運(yùn)算 運(yùn)算符 含義說(shuō)明
加 +相應(yīng)元素相加減 - 相應(yīng)元素相減乘 * 矩陣乘法點(diǎn)乘 .* 相應(yīng)元素相乘冪 ^ 矩陣冪運(yùn)算點(diǎn)冪 .^ 相應(yīng)元素進(jìn)行冪運(yùn)算左除或右除 \或/ 矩陣左除或右除左點(diǎn)除或右點(diǎn)除.\或./ A的元素被B的對(duì)應(yīng)元素除11/17/202011/19/20201/8/202370ApplicationofMatlab2.2.6、數(shù)組的算術(shù)運(yùn)算MATLAB數(shù)組支持線性代數(shù)中所有2.2.6、算術(shù)運(yùn)算(續(xù))
【例5-1】數(shù)組加減法>>a=zeros(2,3);>>a(:)=1:6;>>b=a+2.5b=3.50005.50007.50004.50006.50008.5000>>c=b-ac=2.50002.50002.50002.50002.50002.500011/17/202011/19/20201/8/202371ApplicationofMatlab2.2.6、算術(shù)運(yùn)算(續(xù))【例5-1】數(shù)組加減法11【例5-2】畫出y=1/(x+1)的函數(shù)曲線,x∈[0,100]。x=0:100;y=1./(x+1);plot(x,y);legend(‘y=1/(x+1)’);
2.2.6、算術(shù)運(yùn)算(續(xù))11/17/202011/19/20201/8/202372ApplicationofMatlab【例5-2】畫出y=1/(x+1)的函數(shù)曲線,x∈[0,12.2.6、算術(shù)運(yùn)算(續(xù))【例5-2】生成一個(gè)信號(hào):x=sin(2*pi*t)+sin(4*pi*t)t=[0:199]./100;%采樣時(shí)間點(diǎn)%生成信號(hào)x=sin(2*pi*t)+sin(4*pi*t);plot(t,x);legend(‘x=sin(2*pi*t)+sin(4*pi*t)’);11/17/202011/19/20201/8/202373ApplicationofMatlab2.2.6、算術(shù)運(yùn)算(續(xù))【例5-2】生成一個(gè)信號(hào):x=2.2.6、算術(shù)運(yùn)算(續(xù))11/17/202011/19/20201/8/202374ApplicationofMatlab2.2.6、算術(shù)運(yùn)算(續(xù))11/17/202011/1【例5-2】點(diǎn)冪“.^”舉例>>a=1:6a=123456>>b=reshape(a,2,3)b=135246>>a=a.^2a=149162536>>b=b.^2b=1925416362.2.6、算術(shù)運(yùn)算(續(xù))11/17/202011/19/20201/8/202375ApplicationofMatlab【例5-2】點(diǎn)冪“.^”舉例2.2.6、算術(shù)運(yùn)算(續(xù))
Matlab提供了6種關(guān)系運(yùn)算符:<、>、<=、>=、==、~=(不等于)關(guān)系運(yùn)算符的運(yùn)算法則:1、當(dāng)兩個(gè)標(biāo)量進(jìn)行比較時(shí),直接比較兩數(shù)大小。若關(guān)系成立,結(jié)果為1,否則為0。2、當(dāng)兩個(gè)維數(shù)相等的矩陣進(jìn)行比較時(shí),其相應(yīng)位置的元素按標(biāo)量關(guān)系進(jìn)行比較,并給出結(jié)果,形成一個(gè)維數(shù)與原來(lái)相同的0、1矩陣。3、當(dāng)一個(gè)標(biāo)量與一個(gè)矩陣比較時(shí),該標(biāo)量與矩陣的各元素進(jìn)行比較,結(jié)果形成一個(gè)與矩陣維數(shù)相等的0、1矩陣。2.2.7、關(guān)系運(yùn)算11/17/202011/19/20201/8/202376ApplicationofMatlabMatlab提供了6種關(guān)系運(yùn)算符:<、>、<=、>=、=【例】建立5階方陣A,判斷其元素能否被3整除。A=[24,35,13,22,63;23,39,47,80,80;...90,41,80,29,10;45,57,85,62,21;37,19,31,88,76]A=2435132263233947808090418029105785622119318876P=rem(A,3)==0%被3除,求余P=10001010001000011001000002.2.7、關(guān)系運(yùn)算(續(xù))11/17/202011/19/20201/8/202377ApplicationofMatlab【例】建立5階方陣A,判斷其元素能否被3整除。A=[24
Matlab提供了3種邏輯運(yùn)算符:&(與)、|(或)、~(非)邏輯運(yùn)算符的運(yùn)算法則:1、在邏輯運(yùn)算中,確認(rèn)非零元素為真(1),零元素為假(0)。
2、當(dāng)兩個(gè)維數(shù)相等的矩陣進(jìn)行比較時(shí),其相應(yīng)位置的元素按標(biāo)量關(guān)系進(jìn)行比較,并給出結(jié)果,形成一個(gè)維數(shù)與原來(lái)相同的0、1矩陣;3、當(dāng)一個(gè)標(biāo)量與一個(gè)矩陣比較時(shí),該標(biāo)量與矩陣的各元素進(jìn)行比較,結(jié)果形成一個(gè)與矩陣維數(shù)相等的0、1矩陣;4、算術(shù)運(yùn)算優(yōu)先級(jí)最高,邏輯運(yùn)算優(yōu)先級(jí)最低。2.2.8、邏輯運(yùn)算11/17/202011/19/20201/8/202378ApplicationofMatlabMatlab提供了3種邏輯運(yùn)算符:&(與)、|(或)、~【例】在[0,3π]區(qū)間,求的值。要求消去負(fù)半波,即(π,2π)區(qū)間內(nèi)的函數(shù)值置零。x=0:pi/100:3*pi;y=sin(x);y1=(y>=0).*y;%消去負(fù)半波2.2.8、邏輯運(yùn)算(續(xù))11/17/202011/19/20201/8/202379ApplicationofMatlab【例】在[0,3π]區(qū)間,求【例】建立矩陣A,找出在[10,20]區(qū)間的元素的位置。
A=[4,15,-45,10,6;56,0,17,-45,0];find(A>=10&A<=20)%找到非零元素的位置A=415-4510656017-450ans=3672.2.8、邏輯運(yùn)算(續(xù))11/17/202011/19/20201/8/202380ApplicationofMatlab【例】建立矩陣A,找出在[10,20]區(qū)間的元素的位置。A2.2.9、數(shù)據(jù)分析與統(tǒng)計(jì)最大值和最小值
MATLAB提供的求數(shù)據(jù)序列的最大值和最小值的函數(shù)分別為max和min,兩個(gè)函數(shù)的調(diào)用格式和操作過(guò)程類似。
1、求向量的最大值和最小值求一個(gè)向量X的最大值的函數(shù)有兩種調(diào)用格式,分別是:
(1)y=max(X):返回向量X的最大值存入y,如果X中包含復(fù)數(shù)元素,則按模取最大值;
(2)[y,I]=max(X):返回向量X的最大值存入y,最大值的序號(hào)存入I,如果X中包含復(fù)數(shù)元素,則按模取最大值。求向量X的最小值的函數(shù)是min(X),用法和max(X)完全相同。
11/17/202011/19/20201/8/202381ApplicationofMatlab2.2.9、數(shù)據(jù)分析與統(tǒng)計(jì)最大值和最小值11/17/2【例7-1】求向量的最大值>>x=[-43,72,9,16,23,47];>>y=max(x)%求向量x中的最大值y=72>>[y,l]=max(x)%求向量x中的最大值及其該元素的位置y=72l=22.2.9、數(shù)據(jù)分析與統(tǒng)計(jì)(續(xù))11/17/202011/19/20201/8/202382ApplicationofMatlab【例7-1】求向量的最大值2.2.9、數(shù)據(jù)分析與統(tǒng)計(jì)(續(xù))2.2.9、數(shù)據(jù)分析與統(tǒng)計(jì)(續(xù))2.求矩陣的最大值和最小值求矩陣A的最大值的函數(shù)有3種調(diào)用格式,分別是:(1)max(A):返回一個(gè)行向量,向量的第i個(gè)元素是矩陣A的第i列上的最大值;(2)[Y,U]=max(A):返回行向量Y和U,Y向量記錄A的每列的最大值,U向量記錄每列最大值的行號(hào);(3)max(A,[],dim):dim取1或2。dim取1時(shí),該函數(shù)和max(A)完全相同;dim取2時(shí),該函數(shù)返回一個(gè)列向量,其第i個(gè)元素是A矩陣的第i行上的最大值。求最小值的函數(shù)是min,其用法和max完全相同。11/17/202011/19/20201/8/202383ApplicationofMatlab2.2.9、數(shù)據(jù)分析與統(tǒng)計(jì)(續(xù))2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 游戲行業(yè)客服工作總結(jié)
- 2025年中考英語(yǔ)一輪復(fù)習(xí)之一般過(guò)去時(shí)
- 手工藝品店前臺(tái)服務(wù)感悟
- 醫(yī)療行業(yè)專業(yè)技能培訓(xùn)總結(jié)
- 酒店行業(yè)服務(wù)員工作概述
- 銀行工作總結(jié)嚴(yán)謹(jǐn)高效服務(wù)至上
- 餐廚垃圾處理工作總結(jié)
- 畜牧行業(yè)安全工作總結(jié)
- 2024年秋葉的教案
- 2025屆張家口市高三語(yǔ)文上學(xué)期期末質(zhì)量監(jiān)測(cè)試卷及答案解析
- 2024年新華人壽保險(xiǎn)股份有限公司招聘筆試參考題庫(kù)含答案解析
- 能源托管服務(wù)投標(biāo)方案(技術(shù)方案)
- 2024年新奧集團(tuán)股份有限公司招聘筆試參考題庫(kù)含答案解析
- 乳頭混淆疾病演示課件
- 高速公路涉路施工許可技術(shù)審查指南(一)
- 海南物流行業(yè)發(fā)展趨勢(shì)分析報(bào)告
- 安全運(yùn)維配置檢查
- 移相變壓器計(jì)算程序標(biāo)準(zhǔn)版
- 期末測(cè)試(試題)-三年級(jí)數(shù)學(xué)上冊(cè)人教版
- 藥劑科門診中成西藥房利用PDCA循環(huán)降低門診藥房調(diào)劑內(nèi)差發(fā)生率品管圈QCC成果匯報(bào)
- 物料員工作計(jì)劃與總結(jié)
評(píng)論
0/150
提交評(píng)論