Matlab數(shù)據(jù)處理與分析1_第1頁
Matlab數(shù)據(jù)處理與分析1_第2頁
Matlab數(shù)據(jù)處理與分析1_第3頁
Matlab數(shù)據(jù)處理與分析1_第4頁
Matlab數(shù)據(jù)處理與分析1_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

/前言MATLAB一直是國際科學(xué)界應(yīng)用和影響最廣泛的軟件工具,有著Mathematica和Maple無法比擬的優(yōu)勢和適用面。它不僅僅是一款數(shù)學(xué)軟件,應(yīng)用于微積分、概率統(tǒng)計(jì)、復(fù)變函數(shù)、線性變換、解方程、最優(yōu)化、插值與數(shù)據(jù)顯示等方面,也應(yīng)用于模糊邏輯、小波分析、神經(jīng)網(wǎng)絡(luò)、圖像處理、模式識(shí)別方面求解。另外數(shù)字信息處理、系統(tǒng)仿真、自動(dòng)化、工程力學(xué)、信息與系統(tǒng)、模擬電路等方面都廣泛的應(yīng)用。使用好的數(shù)據(jù)處理方法和相應(yīng)的軟件工具對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行處理是大學(xué)理工數(shù)各專業(yè)學(xué)生應(yīng)具備的基本技能,對于相關(guān)課程的學(xué)習(xí)也非常重要。MATLABT優(yōu)點(diǎn)眾多,本書只是重點(diǎn)討論MATLAB在數(shù)據(jù)處理方面的應(yīng)用。具體包括以下方面的內(nèi)容:1.MATLAB安裝與界面使用詳解;2.?dāng)?shù)組與矩陣與其運(yùn)算;3.MATLAB常用數(shù)值計(jì)算;4.代數(shù)方程與最優(yōu)化;5.符號(hào)計(jì)算;6.插值與擬合;7.?dāng)?shù)據(jù)與函數(shù)的顯示。在閱讀過程中,要求上機(jī)執(zhí)行書中的相關(guān)程序代碼,熟練書的相關(guān)知識(shí),要求勤查MATLAB自帶的幫助系統(tǒng),才能起到很好的學(xué)習(xí)效果。MATLAB的安裝和界面使用本章詳細(xì)講述MATLABR2007a的安裝和界面的使用。MATLAB安裝首先雙“setup.exe”之后,出現(xiàn)如圖1-1的“WelcometotheMathWorksInstaller”窗口,然后點(diǎn)擊“Next”按鈕。1-1進(jìn)入圖1-2的“LicenseInformation”窗口,在Name框和Organization輸入1-2相應(yīng)名稱(自行命名)。然后安裝目錄下的“serial.txt”文件,將序列號(hào)復(fù)制到“PleaseenteryourPersonalLicensePassword(PLP)”框中,然后點(diǎn)擊“Next”按鈕。待少許時(shí)間,防火墻會(huì)提示是否允許訪問網(wǎng)絡(luò)的提示框,如瑞星防火墻會(huì)出如下圖1-3的對話框。1-3選擇“總是允許”,并按“確定”。進(jìn)入“MathWorksAccount”對話框如圖1-4。圖1-4選擇“InstalltheproductversionsfrommyDVDorlocaldiskonly”選項(xiàng)按鈕,進(jìn)入“Licenseagreement”對話框,然后選擇“Yes”按鈕。圖1-5進(jìn)入“InstallationType”對話框,如圖1-6所示,然后選擇“Typical”按鈕,點(diǎn)擊“Next”。圖1-6然后進(jìn)入“”對話框,如圖1-7所示。可以更改安裝目錄,也呆保持默認(rèn)。如果系統(tǒng)盤的空間不空,則應(yīng)更改安裝目錄,以保證機(jī)器的正確運(yùn)行。圖1-7在接下來的步驟中,皆選擇“Next”按鈕,即可。MATLAB的啟動(dòng)與界面詳解在開始菜單中,選擇:開始\程序\MATLAB\R2007a\matlabR2007a,如圖1-8所示。圖1-8然后進(jìn)入MATLAB應(yīng)用程序主界面,如圖1-9所示。最上方是標(biāo)題欄,顯示版本信息:MATLAB7.4.0(R2007a):再往下的一欄是菜單欄:圖1-9接下來是工具欄:其中是指定當(dāng)前工作路徑,如果要向某文件夾中讀取或保存相關(guān)內(nèi)容,則通過點(diǎn)擊,然后選擇該文件夾作為當(dāng)前工作路徑。然后點(diǎn)擊左側(cè)的,則會(huì)出現(xiàn)CurrentDirectory對話框如圖1-10所示,用來顯示當(dāng)前路徑中的文件信息。它和Workspace處于同一具標(biāo)簽對話框中。圖1-10右側(cè)是CommandWindow窗口,如圖1-11所示,是用來輸入MATLAB指令的。一打開MATLAB則在CommandWindow中會(huì)出現(xiàn)“>>”,此符號(hào)表示MATLAB軟件已準(zhǔn)備好了,正在待命令的輸入。如輸入指令:A=[123]然后回車,則出現(xiàn)運(yùn)算結(jié)果:A=123此指令表示輸入一個(gè)一行三列的矩陣(即行向量),并將此矩陣(向量)保存在變量A中。關(guān)于矩陣與向量向量,在第二章中詳細(xì)解釋。圖1-11指令執(zhí)行完畢之后,會(huì)發(fā)現(xiàn)左下方的CommandHistory窗口中會(huì)多出現(xiàn)一行剛剛輸入的指令。如圖1-12所示,CommandHistory是用來保存輸入過的命令,方便以后查找或再次使用。同時(shí)Workspace標(biāo)簽屬性頁也會(huì)多出一行。如圖1-12所示,CurrentDirectory是用來顯示可用的各種變量的。圖中說是說明了剛才得到的變量A,它的值、最小、最大元素與類型等信息。圖1-12圖1-13在上任一處右擊,然后在彈出菜單上選擇需要查看的相關(guān)信息。如圖1-14所示。如果需要用到以前的命令,可以在CommandHistory窗口中查到,可按日期查找,可以選擇單條歷史命令,也可以同時(shí)選擇多條歷史記錄。然后右選擇復(fù)制,將其粘貼到CommandWindow窗口中執(zhí)行。也可將其作為文本復(fù)制到Word文檔或txt文檔中。如果雙擊歷史記錄中的命令,則系統(tǒng)會(huì)立即執(zhí)行被雙擊的命令一次。如果CommandHistory窗口中一些命令不需要,可以一條或多條記錄,然后按“Delete”鍵,將之刪除。圖1-14圖1-15MATLAB的幫助詳解點(diǎn)擊主菜單中的Hellp\MATLABHelp或直接按F1,進(jìn)入MATLAB自帶的幫助界面,如圖1-16所示。點(diǎn)擊各個(gè)節(jié)點(diǎn)可以查看相關(guān)幫助信息。幫助文件里有詳細(xì)的解釋和豐富的實(shí)例。圖1-16由幫助界面,可以看以MATLAB的強(qiáng)大功能,它可以與主流的軟件開發(fā)工具進(jìn)行混合編程開發(fā)。與Java和.Net無縫對接。只有勤查幫助或網(wǎng)上查找資料才能起到事半功倍的學(xué)習(xí)效果。數(shù)組與矩陣的概念與其運(yùn)算在MATLAB中預(yù)定了一些符號(hào),用于特定的含義,以下是一些預(yù)定義的符號(hào):表2-1符號(hào)意義符號(hào)意義ans默認(rèn)變量名pi圓周率eps機(jī)器可識(shí)別的最小的數(shù)flops浮點(diǎn)運(yùn)算之?dāng)?shù)inf無窮大NaN非數(shù)i或j虛數(shù)單位realmax最大的實(shí)數(shù)realmin最小的實(shí)數(shù)intmax最大的整數(shù)其余的請參看聯(lián)機(jī)幫助系統(tǒng)。數(shù)組與矩陣的概念MATLAB中,數(shù)組和矩陣本身是沒有區(qū)別的,在內(nèi)存中是一樣的。只是針對不同的運(yùn)算方式,將其為數(shù)組運(yùn)算或矩陣運(yùn)算。如果運(yùn)算是按元素對應(yīng)進(jìn)行的,則稱為數(shù)組運(yùn)算。如果按線性代數(shù)學(xué)中的方式運(yùn)算,則稱為矩陣運(yùn)算,如例2-1例2-1數(shù)組與矩陣的區(qū)別演示。設(shè)有矩陣A和B如下:以數(shù)組方式運(yùn)算方式:,其中Inf表示無窮大(非數(shù))MATLAB指令:A=[-11;02]%輸入的矩陣保存在變量A中A=-1102B=[-11;02]%輸入的矩陣保存在變量B中B=-1102A.*B%以數(shù)組方式相乘,ans=-1208A./B%以數(shù)組方式相除ans=-12Inf2幾點(diǎn)說明:1、MATLAB中,矩陣(數(shù)組)按元素逐個(gè)輸入的方法,就是將所有元素放在一對方括號(hào)內(nèi),行與行之間以分號(hào)“;”隔開,每一行中各元素之間以空格或逗號(hào)隔開。詳細(xì)說明參看2.2節(jié)內(nèi)容;2、MATLAB指令輸入時(shí),必需在英文狀態(tài)下輸入,否則會(huì)出錯(cuò);3、如果一條指令以分號(hào)“;”作為結(jié)束符,則運(yùn)算結(jié)果并不顯示在CommandWindow窗口中,但保存在Workspace中。如果沒有分號(hào),則將結(jié)果顯示在CommandWindow中;4、百分號(hào)“%”表示注釋,從%開始到行未為方便人閱讀所加的注釋,不是指令中的一部分;5、注意數(shù)組方式運(yùn)算有一個(gè)小黑點(diǎn)“.”;6、本書中凡MATLAB指令都用加粗字體;7、MATLAB中變量無需要聲明就可直接使用,根據(jù)賦值符號(hào)“=”右則表達(dá)式的類型來自動(dòng)確定左側(cè)的類型。如A=[-11;02],A表示一個(gè)2階矩陣。以矩陣方式運(yùn)算(即按線性代數(shù)中的矩陣運(yùn)算):當(dāng)然,矩陣的加法和減法兩種方式都是一樣的,MATLAB指令:A*B%矩陣方式相乘ans=-15-311A/B%矩陣方式相除ans=-1.00001.5000-3.00003.5000注意:如本書中后面內(nèi)容只提與矩陣,只有當(dāng)涉與到數(shù)組方式的運(yùn)算時(shí)才將矩陣稱為數(shù)組。矩陣的創(chuàng)建和操作在MATLAB中,有兩種創(chuàng)建矩陣的方法。一是直接按元素逐個(gè)輸入的方法,如例2-1所示;另一種就是使用MATLAB相關(guān)的指令來創(chuàng)建。一、直接輸入元素創(chuàng)建直接按元素逐個(gè)輸入來創(chuàng)建矩陣,就是將所有元素放在一對方括號(hào)內(nèi),行與行之間以分號(hào)“;”隔開,每一行中各元素之間以空格或逗號(hào)隔開。只有一行的矩陣稱為行向量(也稱為一維數(shù)組),只有一列的矩陣稱為列向量。此方法可創(chuàng)建向量和矩陣。例2-2直接輸入創(chuàng)建向量和矩陣演示。vr=[1234]%創(chuàng)建行向量,元素之間以空格隔開vr=1234vc=[1;2;3]%創(chuàng)建列向量,行之間以分號(hào)隔開vc=123m23=[123;456]%創(chuàng)建一個(gè)2×3行的矩陣m23=123456二、MATLAB指令創(chuàng)建在MATLAB中指令,更多時(shí)候也稱為函數(shù)??梢允褂肕ATLAB內(nèi)置的函數(shù)來創(chuàng)建矩陣(數(shù)組)。以下以舉例的方式說明。例2-3通過MATLAB指令創(chuàng)建向量和矩陣演示:1、指定起點(diǎn):步長:終點(diǎn)。如果不指定步長,則將步長默認(rèn)為1,最后一個(gè)元素不一定是終點(diǎn),這取決于區(qū)間長度是否為步長的整數(shù)倍。該方法用于創(chuàng)建向量。v=0:0.2:1%以0為起點(diǎn)、1為終點(diǎn)、步長為0.2創(chuàng)建一個(gè)數(shù)組(行向量)v=00.20000.40000.60000.80001.0000v=0:pi%起點(diǎn)0、終點(diǎn)pi、默認(rèn)步長1。最后一個(gè)元素不是終點(diǎn)。v=01232、linspace(起點(diǎn),終點(diǎn),元素個(gè)數(shù)),等分間隔。該方法用于創(chuàng)建向量。v=linspace(0,pi,3)v=01.57083.1416v=linspace(0,3,5)v=00.75001.50002.25003.00003.特殊矩陣的創(chuàng)建。創(chuàng)建特殊矩陣的常用函數(shù):rand、magic、zeros、ones和eye等,需要深入研究請參看聯(lián)機(jī)幫助。rand('state',0)%把均勻分布偽隨機(jī)發(fā)生器置為0狀態(tài)v=rand(2,3)%產(chǎn)生一個(gè)2×3的隨機(jī)矩陣v=0.95010.60680.89130.23110.48600.7621m=magic(3)%產(chǎn)生一個(gè)3階魔方矩陣m=816357492zeros(3)%產(chǎn)生一個(gè)3階零矩陣ans=000000000zeros(2,3)%產(chǎn)生一個(gè)2×3的零矩陣ans=000000eye(2,3)%產(chǎn)生一個(gè)2×3的矩陣,左邊2×2是一個(gè)單位矩陣ans=100010eye(3)%產(chǎn)生一個(gè)3階單位矩陣ans=100010001ones(2,3)%產(chǎn)生一個(gè)元素全為1的2×3階矩陣ans=111111另外還有其它特殊的矩陣創(chuàng)建函數(shù),如有需要請參看幫助。矩陣的訪問操作以下以舉例的方式說明矩陣的訪問操作如下:例2-4矩陣訪問舉例演示:v=[1234567];%生成一個(gè)行向量v(3)%查詢第三個(gè)元素的值 ans=3v(3)=23%將第三個(gè)元素的值設(shè)為23v=12234567v([126])=[111216]%將下標(biāo)為1、2、6的三元素的值設(shè)為11、12、16v=11122345167v(4:end)%查詢第4至最后元素之間的所有元素ans=45167v(1:5)% 查詢第1至5個(gè)元素ans=11122345m=[123;456]%產(chǎn)生一個(gè)新矩陣mm=123456m(2,3)%查詢第2行第3列位置上的元素ans=6m(:,2)%查詢第2列元素上所有行的元素ans=25m(2,:)%查詢第2行上所有列的元素ans=456m(2,[12])%查詢第2行上的第1、2列位置上的元素ans=45m(1,[23])=[8899]%將第1行上的第2、3列上的元素分別設(shè)為88和99m=18899456m(2,2)=518%將第2行2列位置上的元素設(shè)為518m=1889945186矩陣的基本運(yùn)算操作矩陣的常用基本運(yùn)算有加、減、乘、除、求逆等。數(shù)組方式和矩陣方式的運(yùn)算符只差了一個(gè)小圓點(diǎn),注意觀察實(shí)例代碼。1、加法和減法數(shù)組方式和矩陣方式都是一樣的,就是直接將對應(yīng)位置上的元素相加。如果是一個(gè)數(shù)和矩陣相加,則矩陣的每一個(gè)元素都加上這個(gè)數(shù)。例2-4矩陣加法操作演示:A=magic(3)%產(chǎn)生一個(gè)魔方矩陣A=816357492B=ones(3)%產(chǎn)生一個(gè)元素全為1的矩陣B=111111111A+B%矩陣的加法ans=92746851032+A%數(shù)與矩陣的加法ans=103857961142、乘法、除法與逆運(yùn)算數(shù)組方式的乘法和除法是依元素對應(yīng)相乘;矩陣方式的乘法則是按線性代數(shù)中的方法進(jìn)行,矩陣的除是按線性代數(shù)中的取逆進(jìn)行。左除:A/B,相當(dāng)于A*B-1,右除:A\B,相當(dāng)于A-1*B。逆運(yùn)算按線性代數(shù)中的方法進(jìn)行。例2-5矩陣乘、除操作演示A=magic(3);B=ones(3);A.*B%數(shù)組方式的乘法ans=816357492A*B%矩陣方式的乘法ans=151515151515151515M=[1,2;21]M=1221B=[1-1;10]B=1-110A./B%維數(shù)不匹配,將會(huì)出錯(cuò)???Errorusing==>rdivideMatrixdimensionsmustagree.M./B%數(shù)組方式的除法ans=1-22InfB./M%數(shù)據(jù)方式的除法ans=1.0000-0.50000.50000M/B%矩陣方式的除法ans=-23-13M*inv(B)%以矩陣方式運(yùn)算,M乘以B的逆矩陣ans=-23-13inv(B)%計(jì)算B的逆ans=01-113、矩陣作為函數(shù)參數(shù)如果矩陣(數(shù)組)作為標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)的參數(shù),則對每一個(gè)元素都作同一函數(shù)計(jì)算。如V是一個(gè)行向量,R=sin(V)的運(yùn)算結(jié)果R也是一個(gè)行向量,且R是的每一個(gè)元素都是由V中對應(yīng)元素值求正弦值得到。例2-6矩陣作為函數(shù)參數(shù)演示v=[0pi/2pi3*pi/22*pi]%產(chǎn)生一個(gè)有4個(gè)元素的行向量v=01.57083.14164.71246.2832r=sin(v)%計(jì)算結(jié)果也是一個(gè)向量,和v的元素個(gè)相同r=01.00000.0000-1.0000-0.00004、常用的矩陣操作函數(shù)常用的矩陣操作函數(shù)如左右置換、上下置換、旋轉(zhuǎn),以下舉例說明。例2-7矩陣常用操作演示A=magic(3)A=816357492flipud(A)%矩陣上下翻轉(zhuǎn)ans=492357816fliplr(A)%矩陣左右翻轉(zhuǎn)ans=618753294rot90(A)% 矩陣旋轉(zhuǎn)90度ans=672159834非數(shù)、關(guān)系運(yùn)算與邏輯操作1、非數(shù)NaN當(dāng)表達(dá)式中如果分母出現(xiàn)零,或類似于的表達(dá)式運(yùn)算時(shí)都會(huì)產(chǎn)生非數(shù)NaN,即Notanumber。NaN具有如下性質(zhì):NaN參與的運(yùn)算結(jié)果也是NaN;非數(shù)沒有大小的概念,因此不能將兩非數(shù)去比較大小。非數(shù)真實(shí)的記錄了運(yùn)算結(jié)果,即數(shù)學(xué)中的無限變換趨,以下舉例說明。例2-8非數(shù)使用演示log(0)%即相當(dāng)于自變量趨向0時(shí)的極限為負(fù)無窮大ans=-Inft=1/0%相當(dāng)于分母從右側(cè)趨向趨向0時(shí)的極限為無窮大t=Infcos(t)%對非數(shù)計(jì)算余弦結(jié)果為非數(shù)ans=NaN非數(shù)要用于數(shù)據(jù)可視化中,如將圖中某一指定部分鏤空,將用到非數(shù),詳見第七章。2、關(guān)系運(yùn)算與邏輯運(yùn)算關(guān)系操作符有:==或eq(A,B),~=或ne,<或lt,>或gt,<=或le,>=或ge,以與&或and、|或or和~或nor等具體函數(shù)要求自行查閱幫助系統(tǒng)。另外有關(guān)函數(shù)如下:all,any,isqual,iempty,isfinite,isinf,isnan,isnumeric,isreal,isprime,isspace,isstr,ischar,isstudent,isunix,isvms,find.列表如下,詳情請參看聯(lián)機(jī)幫助。關(guān)系運(yùn)算符如下表2-2關(guān)系運(yùn)算符功能關(guān)系運(yùn)算符功能<小于>=大于或等于<=小于或等于==等于>大于~=不等于例2-9關(guān)系運(yùn)算與邏輯矩陣使用演示A=[159;347;268]A=159347268B=magic(3)B=816357492C=gt(A,B)%比較大小GreaterthanC=011000001whosC%查看C的詳細(xì)信息NameSizeBytesClassAttributesC3x39logicalD=and(A,B)%求和運(yùn)算D=111111111B>3%B中元素值大于1的位置對應(yīng)1否則對應(yīng)0,結(jié)果是一個(gè)邏輯矩陣ans=101011110B(find(B>3))%將B中元素值大于3的元素列出來ans=845967[r,c]=find(B>3)%元素值大于3的行號(hào)組成的數(shù)組r,列號(hào)組成數(shù)組cr=132312c=112233B.*(B>3)%B中不大于3位置上的元素設(shè)為零ans=806057490例2-10繪制[0,3pi]之間的曲線,并截去pi至2pi之間的曲線。x=linspace(0,3*pi);%自變量數(shù)組y=sin(x);%函數(shù)數(shù)組x1=(x<pi)|(x>2*pi);%邏輯數(shù)組y1=x1.*y;%截?cái)鄶?shù)組plot(x,y1);%繪圖小結(jié)、綜合舉例與練習(xí)例2-11綜合舉例,利用關(guān)系運(yùn)算求近似極限,修補(bǔ)圖形缺口。t=-2*pi:pi/10:2*pi;%自變量數(shù)組y=sin(t)./t;%函數(shù)值數(shù)組tt=t+(t==0)*eps;%修正后的自變量數(shù)組,元素值為零時(shí),以最小機(jī)器數(shù)代替yy=sin(tt)./tt;%修正后的函數(shù)值數(shù)組subplot(1,2,1),plot(t,y),axis([-7,7,-0.5,1.2]),%繪制沒有修正的圖形subplot(1,2,2),plot(tt,yy),axis([-7,7,-0.5,1.2])%繪制修正后的圖形圖2-1矩陣的基本特征參數(shù)本章簡要說明反映矩陣特征參數(shù)的一些量,如行列式、秩、條件數(shù)、范數(shù)、特征值與特征向量等問題。矩陣的基本參數(shù)以一下說明有矩陣信息的基本參數(shù)1、元素個(gè)數(shù)、行列數(shù)與其最大者、元素最大最小元素例3-1矩陣基本信息查詢演示M=magic(3)M=816357492numel(A)%統(tǒng)計(jì)矩陣的元素個(gè)數(shù)ans=9size(M)%計(jì)算矩陣的行列數(shù)ans=33length(A)%計(jì)算行數(shù)與列數(shù)中的最大者ans=3max(M(:))%求出矩陣中所有元素中的最大者ans=9min(M(:))%求出矩陣中所有元素中的最小者ans=1矩陣的行列式、秩與范數(shù)計(jì)算行列式、秩與范數(shù)的指令分別是det、rank和norm例3-2矩陣行列式、秩與范數(shù)使用演示A=magic(3);det(A)%求A的行列式ans=-360rank(A)%計(jì)算矩陣的秩ans=3A=[569;351;861]A=569351861binf=norm(A,'inf')%計(jì)算無窮范數(shù)binf=20b2=norm(A,2)%計(jì)算2范數(shù)b2=15.4215條件數(shù)、矩陣的穩(wěn)定性條件數(shù)是反映AX=b中,如果A或b發(fā)生細(xì)微變化,解變化的劇烈程度。如果條件數(shù)很大說明是病態(tài)方程方程,不穩(wěn)定方程。例3-3矩陣條件數(shù)與穩(wěn)定性演示A=[234;119;12-6]A=23411912-6con2=cond(A)%計(jì)算2-范式條件數(shù)con2=575.8240con1=condest(A)%計(jì)算1-范式條件數(shù)con1=817例3-4求解線性方程組:A=[234;119;12-6]%系數(shù)矩陣A=23411912-6b=[1;-7;9]%常數(shù)列b=1-79x=inv(A)*b%逆矩陣的方法求解x=11-1A\b%左除方法求解ans=11-1A=A+0.001%系數(shù)矩陣加上擾動(dòng)A=2.00103.00104.00101.00101.00109.00101.00102.0010-5.9990b=b-0.001%常數(shù)列加上擾動(dòng)b=0.9990-7.00108.9990x2=inv(A)*b%以逆矩陣的方法求解x2=0.95041.0297-0.9980特征值、特征向量與對角化與數(shù)學(xué)知識(shí)相關(guān)的概念請參考相關(guān)數(shù)學(xué)書籍例3-5特征值與特征向量演示:A=816357492E=eig(A)%計(jì)算特征值E=15.00004.8990-4.8990[V,D]=eig(A)%計(jì)算特征值組成的對角矩陣D和特征向量組成的矩陣VV=-0.5774-0.8131-0.3416-0.57740.4714-0.4714-0.57740.34160.8131D=15.00000004.8990000-4.8990注:有關(guān)正交化運(yùn)算(orth函數(shù))、三角分解(lu)、正交分解(qr)、特征值分解(eig)、奇異值分解(svd)的內(nèi)容,請參看Matlab自還的幫助系統(tǒng)和相關(guān)數(shù)學(xué)書籍小結(jié)、綜合舉例與練習(xí)利用Matlab求解下列線性方程組:要求先分別列出系數(shù)矩陣和常數(shù)列向量,求出其行列式、秩、特征值與特征向量矩陣、2種條件數(shù),系數(shù)矩陣的逆矩陣,然后求出其解,將系數(shù)矩陣再乘以解向量,看是否和常數(shù)向量相等。最后將系數(shù)矩陣加個(gè)0.0002的擾動(dòng),看其解是多少?微積分學(xué)中的基本求解問題符號(hào)運(yùn)算簡介符號(hào)運(yùn)算以推理解析的方式進(jìn)行,因此沒有誤差問題的困擾,能給出完全正確的解析解,如解析解不存在,則給按任意指定的精度給出數(shù)值解。符號(hào)運(yùn)算使用起來非常簡單,與大學(xué)數(shù)學(xué)中的書寫類似。符號(hào)函數(shù)的定義使用指令sym與syms,以下代碼段舉例說明其應(yīng)用。例4-1sym與syms的使用y=sym('2*sin(x)*cos(x)')%通過字符串來創(chuàng)建符號(hào)對象,自變量為xy=2*sin(x)*cos(x)y=simple(y)%將符號(hào)函數(shù)對像化簡y=sin(2*x)symsab;%聲明符號(hào)變量a,by=sin(a)*cos(b)-cos(a)*sin(b);%符號(hào)對象yy=simple(y)%將符號(hào)對象y化簡y=sin(a-b)A=sym('[12;32]')%通過字符串創(chuàng)建矩陣符號(hào)對象AA=[1,2][3,2]da=det(A)%計(jì)算A的行列式da=-4ia=inv(A)%計(jì)算A的逆矩陣,注意結(jié)果含有分?jǐn)?shù)ia=[-1/2,1/2][3/4,-1/4]ea=eig(A)%計(jì)算A的特征值ea=4-1[ev,ea]=eig(A)%計(jì)算特征值和特征向量。ev=[-1,1][1,3/2]ea=[-1,0][0,4]注意:使用符號(hào)運(yùn)算就像平時(shí)數(shù)學(xué)運(yùn)算一樣方便。另外MATLAB中還有針對多項(xiàng)式操作的一系列函數(shù):colllect:同冪次的項(xiàng)系數(shù)進(jìn)行合并;expand:按多項(xiàng)式、三角函數(shù)或指數(shù)對數(shù)函數(shù)等展開;factor:因式分解;horner:將多項(xiàng)式分解成嵌套形式;simple:將表達(dá)式化簡。如需要時(shí)可查看幫助,此不再詳細(xì)展開。符號(hào)對象的精度控制在符號(hào)計(jì)算中,當(dāng)符號(hào)常數(shù)或符號(hào)結(jié)果需要以數(shù)值形式給出時(shí),可以靈活地按指定精度輸出數(shù)值。與精度有關(guān)的三個(gè)函數(shù)指令:double,digits,vpadigits:顯示當(dāng)前采用的數(shù)值計(jì)算精度;digits(n):設(shè)置今后數(shù)值計(jì)算以n位相對精度進(jìn)行;xs=vpa(x):在digits指定精度下,給出x的數(shù)值型結(jié)果;xs=vpa(x,n):在n位相對精度下,給出x的數(shù)值型結(jié)果。以下舉例說明。例4-2精度控制演示。vpa(pi)%依當(dāng)前精度輸出ans=3.1415927eval('pi')%依默認(rèn)精度輸出ans=3.1416vpa(pi,'100')%依指定精度輸出ans=3.149323846264338327953993752117068a=sym('1/3')%創(chuàng)建符號(hào)對象a=1/3digits(2);%設(shè)置當(dāng)前精度為2vpa(a)%以當(dāng)前精度輸出ans=.33digits(19);%設(shè)置當(dāng)前精度為19vpa(a)%以當(dāng)前精度輸出ans=.3333333333333333333極限求解MATLAB中計(jì)算極限的函數(shù)是limit,其語法如下:limit(F,x,a):計(jì)算limit(F,x,a,'right'):limit(F,x,a,'left'):例4-3求符號(hào)極限演示:symsxath%說明字符變量 limit(sin(x)/x)%計(jì)算極限,默認(rèn)求右趨于零的極限ans=1limit(1/x,x,0,'right')%對x求右趨于零的極限ans=Inflimit(1/x,x,0,'left')%對x求左趨于零的極限ans=-Inflimit((sin(x+h)-sin(x))/h,h,0)%對h求趨于零的極限ans=cos(x)v=[(1+a/x)^x,exp(-x)]%v=[(1+a/x)^x,exp(-x)]limit(v,x,inf,'left')%對x求左趨于正無窮大的極限ans=[exp(a),0]導(dǎo)數(shù)與其幾何應(yīng)用導(dǎo)數(shù)問題分兩類,一類是已知函數(shù)解析式,然后計(jì)算其導(dǎo)數(shù)解析式或計(jì)算某點(diǎn)的導(dǎo)數(shù)值,此類問題很好處理。另一類問題是只有實(shí)驗(yàn)得到的離散數(shù)據(jù),要得到各階導(dǎo)數(shù)值,該類問題比較麻煩,常用的方法是中心差分法。幾何上介紹點(diǎn)積、叉積、混合積,切平面和法線、梯度場,流線場。一、解析法求導(dǎo)數(shù)問題解析法求導(dǎo)使用符號(hào)運(yùn)算,求導(dǎo)函數(shù)為diff,語法如下:diff(S);%對S求導(dǎo),依26字母中最接近x的字母為自變量diff(S,'v');%以v為自變量,對S求導(dǎo)diff(S,'v',n);%以v為自變量,對S求n階導(dǎo)數(shù)例4-3求符號(hào)極限演示:da=diff('x^5+3*x+5')%求導(dǎo)數(shù)da=5*x^4+3f=sym('log(x)/exp(x^2)')%定義符號(hào)函數(shù) f=log(x)/exp(x^2)simplify(diff(f))%對函數(shù)求導(dǎo)數(shù)后再化簡ans=-exp(-x^2)*(-1+2*log(x)*x^2)/xsimplify(diff(f,2))%對函數(shù)求二階導(dǎo)數(shù)后化簡ans=exp(-x^2)*(-1-4*x^2+4*log(x)*x^4-2*log(x)*x^2)/x^2二、向量的點(diǎn)積、叉積和混合積點(diǎn)積、叉積與混合積的相關(guān)概念,請參見數(shù)據(jù)書籍。例4-4點(diǎn)積、叉積與混合演示:x1=[1980]x1=1980x2=[2697]x2=2697y=dot(x1,x2)%點(diǎn)積運(yùn)算y=128y1=cross(x1,x2)%維數(shù)是3才能進(jìn)行叉積運(yùn)算???Errorusing==>crossat37AandBmusthaveatleastonedimensionoflength3.x1=[952]x1=952x2=[327]x2=327xd=dot(x1,x2)%計(jì)算點(diǎn)積xd=51xcr=cross(x1,x2)%計(jì)算叉積xcr=31-573xcr2=cross(x2,x1)%計(jì)算叉積xcr2=-3157-3x3=[247]x3=247ydc=dot(x3,cross(x1,x2))%混合積運(yùn)算,用于計(jì)算平行六面體的體積ydc=-145各種積分問題積分有符號(hào)方法和數(shù)值方法,以下分別說明。符號(hào)積分的函數(shù)是int,它的語法是:int(S);%計(jì)算S的一個(gè)原函數(shù)。int(S,v);%以v為積分變量計(jì)算S的一個(gè)原函數(shù)int(S,a,b);%計(jì)算符號(hào)積分,a與b是下限和上限,S是被積函數(shù)int(S,v,a,b);%計(jì)算符號(hào)積分,a與b是下、上限,S是被積函數(shù),v是積分變量例4-5符號(hào)積分演示:f=sym('sin(s+2*x)')%定義符號(hào)函數(shù)f=sin(s+2*x)int(f)%求原函數(shù)ans=-1/2*cos(s+2*x)int(f,'s')%以s為積分變量求原函數(shù)ans=-cos(s+2*x)int(f,pi/2,pi)%計(jì)算指定區(qū)間的定積分ans=-cos(s)int(f,'s',pi/2,pi)%指定積分變量,指定區(qū)間求定積分ans=-sin(2*x)+cos(2*x)int(f,'a','b')%指定區(qū)間上求定積分ans=1/2*cos(s+2*a)-1/2*cos(s+2*b)例4-6求與。F1=int('1/log(t)','t',0,'x')%計(jì)算符號(hào)積分,無初等解析式。Warning:Explicitintegralcouldnotbefound.>Inat58Inat9F1=int(1/log(t),t=0..x)F1=int('1/log(t)','t',0,'1/2')%計(jì)算積分,無初等解析式。F1=-Ei(1,log(2))vpa(F1)%以指定精度得到數(shù)值解。ans=-.378671672720718463656例4-7求積分。注意:內(nèi)積分上下限都是函數(shù)。symsxyzF2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2)VF2=vpa(F2)F2=1610027357/656/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4)VF2=224.9232805以下實(shí)例是數(shù)值計(jì)算方法計(jì)算積分。例2-8繪制下列空間曲線的圖形并計(jì)算長度,參數(shù)方程:,長度:t=0:0.05:3*pi%生成數(shù)組plot3(sin(2*t),cos(t),t)%繪制三維曲線圖4-1f=inline('sqrt(4*cos(2*t).^2+sin(t).^2+1)')%d定義一個(gè)內(nèi)聯(lián)函數(shù)f=Inlinefunction:f(t)=sqrt(4*cos(2*t).^2+sin(t).^2+1)%functionlen=quad(f,0,3*pi)%使用數(shù)值方法計(jì)算定積分的值len=17.2220級(jí)數(shù)問題求解級(jí)數(shù)求各的函數(shù)是symsum,它的語法形式是:r=symsum(s,a,b);r=symsum(s,v,a,b);以下舉例說明它們的使用方法,詳細(xì)請查閱MATLAB自帶的幫助文件。例4-7求和與,數(shù)值轉(zhuǎn)換與精度控制演示:A=symsum(sym('(2*n-1)^2'),1,'N')%求和A=11/3*N+8/3-4*(N+1)^2+4/3*(N+1)^3simplify(A)%化簡ans=-1/3*N+4/3*N^3B=symsum(sym('1/((2*n-1)^2)'),1,inf)%求無窮項(xiàng)和B=1/8*pi^2%digits(15)%設(shè)置當(dāng)前精度vpa(B)%必須使用vpa函數(shù)才能用相應(yīng)精度輸出ans=1.23370055013617例4-10求和與和,數(shù)值轉(zhuǎn)換與精度控制演示:symsxkr=symsum(1/k^2,1,20)%1至20求和r=17299975731542641/170720r=symsum(1/k^2,10,20)%10至20求和r=32561/54192375991353600代數(shù)方程與最優(yōu)化代數(shù)方程求解代數(shù)方程的函數(shù)是solve,它的語法是:solve(eq)solve(eq,var)solve(eq1,eq2,...,eqn)g=solve(eq1,eq2,...,eqn,var1,var2,...,varn)說明:輸入?yún)?shù)符號(hào)表達(dá)式或字符串。如果輸入?yún)?shù)是形如的字符串,即:solve(),則執(zhí)行指令求解方程??梢郧蠼鈫蝹€(gè)方程,也可求解方程組。參數(shù)var,var1,var2,...,varn用于指定未知變量,eq1,eq2,...,eqn是用符號(hào)表達(dá)式或字符串表示的方程。另外MATLAB還提供了函數(shù)fsolve,可用于求解多元方程的一個(gè)實(shí)根,詳細(xì)使用方法請參看幫助文件,此處主要介紹solve.例5-1求解方程,其中分別將x和b視為未知數(shù)。A=solve('a*x^2+b*x+c')%求解方程,A表示解組成的數(shù)組,x為未知數(shù)。A=-1/2*(b-(b^2-4*a*c)^(1/2))/a-1/2*(b+(b^2-4*a*c)^(1/2))/aA=solve('a*x^2+b*x+c','b')%求解方程,b為未知數(shù)。A=-(a*x^2+c)/x例5-2求解方程組,和S=solve('x+y=1','x-11*y=5')%求解方程組S=x:[1x1sym]y:[1x1sym]S.x,S.y%顯示結(jié)果ans=4/3ans=-1/3A=solve('a*u^2+v^2','u-v=1','a^2-5*a+6')%解方程組并顯示結(jié)果的結(jié)構(gòu)A=a:[4x1sym]u:[4x1sym]v:[4x1sym]A.a,A.u,A.v%顯示結(jié)果的A的各個(gè)部分ans=2233ans=1/3+1/3*i*2^(1/2)1/3-1/3*i*2^(1/2)1/4+1/4*i*3^(1/2)1/4-1/4*i*3^(1/2)ans=-2/3+1/3*i*2^(1/2)-2/3-1/3*i*2^(1/2)-3/4+1/4*i*3^(1/2)-3/4-1/4*i*3^(1/2)a=A.a;u=A.u;v=A.v;%顯示結(jié)果的A的各個(gè)部分分別保存在a,u,v中[eval('a.*u.^2+v.^2')eval('u-v-1')eval('a.^2-5.*a+6')]%檢驗(yàn)結(jié)果是否正確ans=[2*(1/3+1/3*i*2^(1/2))^2+(-2/3+1/3*i*2^(1/2))^2,0,0][2*(1/3-1/3*i*2^(1/2))^2+(-2/3-1/3*i*2^(1/2))^2,0,0][3*(1/4+1/4*i*3^(1/2))^2+(-3/4+1/4*i*3^(1/2))^2,0,0][3*(1/4-1/4*i*3^(1/2))^2+(-3/4-1/4*i*3^(1/2))^2,0,0]a.*u.^2+v.^2%檢驗(yàn)結(jié)果是否為零,下面的結(jié)果似乎表示方程左邊不為零ans=2*(1/3+1/3*i*2^(1/2))^2+(-2/3+1/3*i*2^(1/2))^22*(1/3-1/3*i*2^(1/2))^2+(-2/3-1/3*i*2^(1/2))^23*(1/4+1/4*i*3^(1/2))^2+(-3/4+1/4*i*3^(1/2))^23*(1/4-1/4*i*3^(1/2))^2+(-3/4-1/4*i*3^(1/2))^2u-v-1%檢驗(yàn)結(jié)果是否為零,結(jié)果顯示方程左邊為零ans=0000a.^2-5.*a+6%檢驗(yàn)結(jié)果是否為零,結(jié)果顯示方程左邊為零ans=0000eval(a.*u.^2+v.^2)%將符號(hào)變量轉(zhuǎn)成數(shù)值,結(jié)果顯示方程左邊幾乎可看成零ans=1.0e-015*000.11100.1110無條件最優(yōu)化問題求解MATLAB中解決無條件極值的函數(shù)有兩個(gè):fminunc和fminsearch,其中fminunc算法效率要優(yōu)于fminsearch,此處主要講解fminunc。它主要是解決最小值問題(最大值問題也可化為最小值問題):,其中x是向量,f(x)是目標(biāo)函數(shù)。它的語法形式如下:x=fminunc(fun,x0)x=fminunc(fun,x0,options)[x,fval]=fminunc(...)函數(shù)使用說明:1、fminunc嘗試找到標(biāo)量函數(shù)fun的最小值,從x0開始始搜索。x0是預(yù)先指定的初值,fun是目標(biāo)函數(shù),返回值x即為所搜索到的局部最小值點(diǎn),fval是函數(shù)fun在局部最小值點(diǎn)x處的函數(shù)值。還有其它返回值,具體請參看幫助文件。2、該函數(shù)搜索到的可能是局部極小值點(diǎn),而不是全局極小值。很難找到萬能的搜索全局最小值的算法函數(shù),因此在使用該函數(shù)可考慮由函數(shù)圖像中選擇一個(gè)極小值點(diǎn)附近處的某值x0作為初值,才能確定全局最小值。3、函數(shù)fun可以是內(nèi)聯(lián)形式的函數(shù),也可以是以M文件形式存在的函數(shù),還可以是無名函數(shù),因內(nèi)聯(lián)形式和無名函數(shù)形式相對簡單,本節(jié)只舉例講述此兩者,至于M文件形式的函數(shù),請參看幫助文件。4、有時(shí)搜索的速度較慢,則需要使用函數(shù)梯度,可加速搜索。但略復(fù)雜,如實(shí)際需要可參看幫助文件。5、options的關(guān)鍵參數(shù)有5個(gè)分別是:options.Display:用于顯示設(shè)置,有四個(gè)選取值off、iter、final和notify;options.MaxFunEvals:允許函數(shù)計(jì)算的最多次數(shù);options.MaxIter:允許的最多迭代次數(shù);options.TolFun:函數(shù)值計(jì)算的終止容差,缺少值1.0000e-004;options.TolX:自變量計(jì)算的終止容差,缺少值同上。以后涉與options參數(shù)的同上。例5-3求函數(shù)的最小值以下指令是直接求解,不顯示計(jì)算的迭代過程。f=inline('3*x(1)^2+2*x(1)*x(2)+x(2)^2');%內(nèi)聯(lián)形式的函數(shù),注意形式x0=[1,1];%初值[x,fval]=fminunc(f,x0)x=1.0e-006*0.2541-0.2029fval=1.3173e-013以下代碼是顯示中間的迭代過程f=inline('3*x(1)^2+2*x(1)*x(2)+x(2)^2');x0=[1,1];fopt=optimset;%設(shè)置選項(xiàng),用于顯示執(zhí)行過程fopt.Display='iter';%顯示迭代過程[x,fval]=fminunc(f,x0,fopt)IterationFunc-countf(x)Step-sizeoptimality0368160.250.1251290.080576310.3893120.051033410.2764150.0023402910.1585180.00011471610.03666213.4414e-00710.001167249.12732e-01014.45e-0058271.31734e-01311.16e-006x=1.0e-006*0.2541-0.2029fval=1.3173e-013例5-4求函數(shù)的最小值,與f=@(x)sin(x)+3;%無名函數(shù)形式[x,f]=fminunc(f,4)x=4.7124f=2.0000f=inline('sin(x(1))+cos(x(2))+3');%內(nèi)聯(lián)形式,x0=[45];[x,fv]=fminunc(f,x0)x=4.71243.1416fv=1.0000線性規(guī)劃求解MATLAB求解線性規(guī)劃的函數(shù)是linprog,它是計(jì)算如下線性規(guī)劃問題的最小值:,其中注意,等式條件(2)中,是矩陣,是向量,不等式條件(1)中,A是矩陣,b是向量,不等式條件(3)中的lb和ub也是向量。linprog的語法是:x=linprog(f,A,b)x=linprog(f,A,b,Aeq,beq)x=linprog(f,A,b,Aeq,beq,lb,ub)x=linprog(f,A,b,Aeq,beq,lb,ub,x0)x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)說明:f即是目標(biāo)函數(shù),A,b,Aeq,beq,lb,ub,x0同前所述,x是最小值點(diǎn),fval是最小值點(diǎn)處的函數(shù)值(即搜索到的最小值)。如果沒有相應(yīng)的條件,則對應(yīng)的矩陣或向量應(yīng)設(shè)為空矩陣(空數(shù)組),以下舉例說明。例5-5求函數(shù)的最小值,其中x滿足條件:(1)先按變量的順序排好,然后用系數(shù)表示目標(biāo)函數(shù),如此處:f=[-5;-4;-6];(2)由于沒有等式條件,所以Aeq、beq都是空矩陣即[];(3)不等式條件中的第三個(gè)式子中,沒有x3,所以系數(shù)為零,故有:(4),,由于沒有上限要求,故設(shè)為無窮大。解:f=[-5;-4;-6];%目標(biāo)函數(shù)的系數(shù)A=[1-11324320];%不等式各變量系數(shù)b=[20;42;30];%不等式條件中的常列l(wèi)b=[0;0;0];%各變量的下限ub=[inf;inf;inf];%各變量的上限[x,fval]=linprog(f,A,b,[],[],lb,[]);%求解運(yùn)算Optimizationterminated.x,fval%查看結(jié)果x=0.000015.00003.0000fval=-78.0000注意:凡一如果是大于的不等式,則將其轉(zhuǎn)化成小于不等式,求最大值的,轉(zhuǎn)化成求最小值。練習(xí)1:求解函數(shù)的最大值,其中x滿足條件:f=[-3/4,150,-1/50,6];%目錄函數(shù)的系數(shù),取反是為了得到最小值,即原函數(shù)的最大值參考代碼:Aeq=[];beq=[];%沒有等式條件,所以相應(yīng)的矩陣為空A=[1/4,-60,-1/50,9;1/2,-90,-1/50,3];%不等式條件中的各變量系數(shù)矩陣b=[0,0];%不等式條件中的常數(shù)列l(wèi)b=[-5;-5;-5;-5];ub=[inf;inf;1;inf];%各自變量的下限和上限x0=[1;1;1;1];%初始值[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub,x0);%求解運(yùn)算Optimizationterminated.x,fvalx=-5.0000-0.19471.0000-5.0000fval=-55.4700說明:1、對于目標(biāo)函數(shù)是二次型的形式且約束條件仍然為線性的,則應(yīng)使用專門的相應(yīng)二次型規(guī)劃函數(shù):quadprog;2、對于有約束的非線性最優(yōu)化的問題,應(yīng)使用非線性規(guī)劃問題求解函數(shù):fmincon.3、對于0-1規(guī)劃,即自變量只能取0或1兩個(gè)值的規(guī)劃問題。MATLAB中相應(yīng)的規(guī)劃函數(shù)是bintprog。由于篇幅原因,此兩類問題不再詳述,如有需要請參看幫助文件。數(shù)據(jù)與函數(shù)的可視化顯示視覺是人們感受世界、認(rèn)識(shí)自然的最重要依靠。數(shù)據(jù)可視化的目的在于:通過圖形,從一堆雜亂的離散數(shù)據(jù)中觀察數(shù)據(jù)間的內(nèi)在關(guān)系,感受由圖形所傳遞的內(nèi)在本質(zhì)。MATLAB一向注重?cái)?shù)據(jù)的圖形表示,并不斷地采用新技術(shù)改進(jìn)和完備其可視化功能。本章將系統(tǒng)地闡述:離散數(shù)據(jù)表示成圖形的基本機(jī)理;曲線、曲面繪制的基本技法和指令;重點(diǎn)與關(guān)鍵步驟:一、準(zhǔn)備數(shù)據(jù)二、顯示數(shù)據(jù)二維顯示常用的二維繪圖函數(shù)有plot、quiver、contour。除此之外還有不太常用的繪圖函數(shù),如polar、loglog、semilogx、semilogy、bar、barh、rose、stairs、area、pie、scatter、hist、erroerbar、stem、feather、commet、compass等,詳情請看參看幫助文件這里只介紹plot、quiver和contour。一、plot繪圖函數(shù)簡介plot的語法如下plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName',PropertyValue,...)plot(axes_handle,...)h=plot(...)函數(shù)說明:1、當(dāng)輸入?yún)?shù)只有一個(gè)時(shí),如plot(Y),Y是輸入向量,以Y的下標(biāo)作為橫坐標(biāo),以Y的值作為縱坐標(biāo)繪圖,默認(rèn)的方式是各離散點(diǎn)之間使用線段連接起來,當(dāng)點(diǎn)取得足夠密時(shí),看起來就是一條光滑的曲線。2、plot(X1,Y1,...,Xn,Yn)針對每一對坐標(biāo)數(shù)據(jù)參數(shù)(Xi,Yi)繪制一條曲線,Xi,Yi都一向量。每一對坐標(biāo)數(shù)據(jù)參數(shù)后可緊跟一個(gè)控制線型或顏色的的參數(shù),也可沒有。如果沒有線型或顏色的參數(shù),則采用默認(rèn)的線型和顏色繪制曲線。注意,Xi,Yi也可以是矩陣,情況略復(fù)雜,成對的矩陣參數(shù)必需是同型矩陣(行列數(shù)都相同),以Xi的某列為橫坐標(biāo)向量,同Yi中相同列號(hào)的列為縱坐標(biāo)向量繪制曲線,具體請看實(shí)例演示。例6-1繪制函數(shù)在上的不同參數(shù)下的圖像代碼段1:x=-pi:pi/10:pi;%第一步準(zhǔn)備數(shù)據(jù):自變量數(shù)組y=tan(sin(x))-sin(tan(x));%第一步準(zhǔn)備數(shù)據(jù)(函數(shù)數(shù)組)plot(x,y,'--rs','LineWidth',2,...%一條指令要多行顯示,則在行后加三個(gè)圓點(diǎn)“…”'MarkerEdgeColor','k',...%各點(diǎn)連線的顏色,'MarkerFaceColor','g',...%坐標(biāo)點(diǎn)的顏色'MarkerSize',10)%'--rs'中的--表示連線線型,rs表示點(diǎn)形狀得到如圖6-1所示的圖像圖6-1圖6-2代碼段2x=-pi:pi/10:pi;y=tan(sin(x))-sin(tan(x));plot(x,y,'--','LineWidth',2,...%和代碼段相比,只是坐標(biāo)點(diǎn)的形狀變了。'MarkerEdgeColor','k',...'MarkerFaceColor','g',...'MarkerSize',10)此代碼段產(chǎn)生圖6-2的圖像。注:b藍(lán),g綠,r紅,c青,m:品紅,y:黃,k:黑,w:白例6-2繪制函數(shù)在上的圖像圖6-3圖6-4x=-pi:.1:pi;y=sin(x);plot(x,y);%第二步繪圖,參數(shù)分別對應(yīng)自變量和函數(shù)set(gca,'XTick',-pi:pi/2:pi)%設(shè)置x軸的刻度區(qū)間長度set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})%標(biāo)示刻度例6-3二維曲線繪制,并顯示網(wǎng)格:t=0:pi/100:2*pi;y=sin(t);%第一步準(zhǔn)備數(shù)據(jù)plot(t,y)%第二步繪圖gridon%Turnongridlinesforthisplot得到圖6-4的圖像。例6-3二維曲線平移正弦曲線組繪制:t=0:pi/100:2*pi;y=sin(t);y2=sin(t-0.25);%向右平衡0.25單位,繪圖區(qū)間不變y3=sin(t-0.5);%向右平衡0.5單位,繪圖區(qū)間不變plot(t,y,t,y2,t,y3);holdon;%保留之前所畫圖,之后的畫圖時(shí)不清除以前畫的圖plot(t,y-1,t,y2+1,t,y3);%上、下各平衡1個(gè)單位得到圖6-5,關(guān)于holdon的詳情,請參看幫助文件圖6-5圖6-6例6-4一組橢圓的繪制演示:。th=[0:pi/50:2*pi]';%參數(shù)值數(shù)組101×1a=[0.5:.5:4.5];%軸長數(shù)組1×9X=cos(th)*a;%水平坐標(biāo)值數(shù)組101×9Y=sin(th)*sqrt(25-a.^2);%縱坐標(biāo)值數(shù)組101×9plot(X,Y)%繪圖,以X,Y中對應(yīng)的列分別的曲線的橫、縱坐標(biāo)繪曲線。因X,Y共9列,所以共繪制9條曲線。得到圖6-6例6-5一組正弦曲線的繪制演示:t=(0:pi/50:2*pi)';%自變量數(shù)據(jù)準(zhǔn)備101×1,注意“'”表示取轉(zhuǎn)置k=0.4:0.1:1;%縮放系數(shù)數(shù)組1×7Y=cos(t)*k;%函數(shù)的相關(guān)數(shù)據(jù)101×7plot(t,Y)%繪圖注:相當(dāng)于:plot(t,0.5*cos(t),t,0.6*cos(t),t,0.7*cos(t),t,0.8*cos(t),t,0.9*cos(t),t,cos(t))圖6-7圖6-8例6-6用圖形表示連續(xù)調(diào)制波形與其包絡(luò)線演示:t=(0:pi/100:pi)'; %101×1y1=sin(t)*[1,-1]; %101×2,包絡(luò)y2=sin(t).*sin(9*t); %101×1,曲線t3=pi*(0:9)/9; %1×10,零點(diǎn)坐標(biāo)y3=sin(t3).*sin(9*t3);%零點(diǎn)函數(shù)值,1×10plot(t,y1,'r:',t,y2,'b',t3,y3,'bo') axis([0,pi,-1,1]) %坐標(biāo)軸比例大小注:axis([xminxmaxyminymax]):setsthelimitsforthex-andy-axisofthecurrentaxes.練習(xí):繪制有的平移曲線組,要求有五條曲線練習(xí)二:使用Matlab在一個(gè)plot指令中繪制y=sinx,y=0.2sinx,y=0.4sinx,y=0.6sinx,y=0.8sinx的組圖,大致如下圖6-9所示:圖6-9圖6-10二、contour繪圖函數(shù)簡介contour用于繪制三維曲面的二維等高線,并帶有標(biāo)注。它的常用的基本語法如下:contour(X,Y,Z)contour(X,Y,Z,n)contour(X,Y,Z,v)函數(shù)說明:X,Y,Z是同型矩陣(行列數(shù)相同),分別表示記錄空間曲面網(wǎng)格點(diǎn)的,x,y,z坐標(biāo)矩陣,n表示等高線的條數(shù),是一個(gè)標(biāo)量。v是一個(gè)向量,其元素值表示高度值(即z坐標(biāo)值),在v指定的z坐標(biāo)高度畫等高線。當(dāng)然還有其它語法形式,具體參看幫助文件。由于空間曲面的描述需要網(wǎng)格點(diǎn),而產(chǎn)生網(wǎng)格數(shù)據(jù)的函數(shù)是meshgrid,具體看幫助系統(tǒng),此處僅舉例說明。例6-7繪制曲面的等高線,其中-2<x<2,-2<y<2。[X,Y]=meshgrid(-2:.2:2,-2:.2:3);%X、Y分別是記錄x和y坐標(biāo)的矩陣Z=X.*exp(-X.^2-Y.^2);%Z分別是記錄z坐標(biāo)的矩陣[C,h]=contour(X,Y,Z);%繪制等高線,C記錄各等高線數(shù)據(jù)的矩陣,h是等高線圖形對象colormapcool%再改顏色風(fēng)格set(h,'ShowText','on');%顯示條等高線的標(biāo)注注意:可以在Workspace中查看C,h,上述代碼得到圖6-10。三、gradient與quiver繪制二維梯度場1、gradient用于繪制二元函數(shù)的梯度場,其運(yùn)算是基于離散網(wǎng)格數(shù)據(jù)點(diǎn)的,梯度使用差分來近似表示梯度的理論值。其常用的語法形式如下:FX=gradient(F)[FX,FY]=gradient(F)[FX,FY,FZ,...]=gradient(F)[...]=gradient(F,a,b)函數(shù)說明:F表示二元函數(shù)的函數(shù)值矩陣,即Z=f(x,y)中的z坐標(biāo)值的矩陣。FX是水平方向的偏導(dǎo)數(shù)值矩陣,即水平方向的差分,F(xiàn)Y表示垂直方向的差分值矩陣。如是三元函數(shù),則FZ表示z軸方向的差分值矩陣。a,b用于指定計(jì)算差分時(shí)兩個(gè)方向的步長。如果參數(shù)只兩個(gè),一個(gè)是F,另一個(gè)是標(biāo)量參數(shù),則兩個(gè)方向步長相同。2、quiver函數(shù)是根據(jù)gradient函數(shù)得到的水平和垂直梯度值來繪制梯度場,有時(shí)為了方便,將梯度場和等高線繪制在同一幅圖中。quiver的常用語法如下:quiver(x,y,u,v)h=quiver(...)x,y,u與v是同型矩陣,x與y記錄定義域中網(wǎng)格點(diǎn)的橫坐標(biāo)值與縱坐標(biāo)值,u與v記錄網(wǎng)格點(diǎn)的水平與縱向梯度值,h表示所繪梯度場對象。例6-8繪制曲面的梯度場與帶有等高線的梯度場,其中-2<x<2,-2<y<2。x=-2:.2:2;%定義域中x方向的定義域y=-1:.2:1;%定義域中y方向的定義域[xx,yy]=meshgrid(x,y);%產(chǎn)生網(wǎng)格矩陣以記錄網(wǎng)格點(diǎn)的x坐標(biāo)和y坐標(biāo)的值zz=xx.*exp(-xx.^2-yy.^2);%記錄網(wǎng)格點(diǎn)的z坐標(biāo)[px,py]=gradient(zz,.2,.2);%得到x,y方向梯度quiver(x,y,px,py,2);%繪制梯度場,第5個(gè)參數(shù)表示箭頭的長度。此段代碼得到圖6-11圖6-11圖6-12以下是代碼段產(chǎn)生一個(gè)帶有等高線的梯度場,如圖6-12所示。v=-2:0.2:2;[x,y]=meshgri

溫馨提示

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

評論

0/150

提交評論