




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1Matlab在電氣工程中的應用
2第1章MATLAB概述MATLAB簡介MATLAB啟動與退出MATLAB主體介面MATLAB幫助系統31.1MATLAB簡介
MATLAB是一種功能十分強大、運算效率很高的工具軟體,MATLAB為MatrixLaboratory的縮寫,本意矩陣實驗室。在1980年由美國學者克利夫·莫勒(CleveMoler)編制。特別適合線性代數運算。(MathWorks軟體公司)同其他高級語言相比,其具有很多優點:1.容易使用2.豐富的內部函數3.強大的圖形和符號功能4.與其他軟體和語言有良好的對接性41.2MATLAB啟動與退出1.2.1MATLAB的啟動1.2.2MATLAB的退出1.利用MATLAB菜單退出單擊File菜單,從中選擇ExitMATLAB。2.使用quit/exit語句退出在指令窗口直接輸入quit/exit即可。3.使用熱鍵退出在MATLAB窗口中同時按下Ctrl+Q即可。4.單擊窗口可直接退出51.3MATLAB主體介面菜單欄工具欄工作區窗口指令歷史窗口指令窗口61.4MATLAB幫助系統1.4.1幫助窗口
1.幫助窗口的起動
2.幫助窗口的內容幫助主題(Contents)幫助索引(Index)幫助查詢(Search)聯機演示(Demos)1.4.2命令窗口查詢幫助
1.help+函數名
2.lookfor+關鍵字72.2 MATLAB的基本組成和特點2.2.1MATLAB的語言部分
1.特點 (1)具有強大的矩陣運算能力:MatrixLaboratory(矩陣實驗室),使得矩陣運算非常簡單。 (2)MATLAB是一種演算式語言
MATLAB的基本數據單元是既不需要指定維數,也不需要說明數據類型的矩陣(向量和標量為矩陣的特例),而且數學運算式和運算規則與通常的習慣相同。 因此MATLAB語言編程簡單,使用方便。82.2.2MATLAB軟體系統的構成
MATLAB軟體主要由主包、SIMULINK和工具箱組成。
MATLAB主包包括以下五部分:(1)MATLAB語言:程式設計(2)MATLAB工作環境:集成工具和程式(3)句柄圖形:實現二維、三維數據可視化(4)數學函數庫:數學演算法集合:正弦、求和、複數……
(5)應用程式介面:用於同C、FORTAN等其他高級語言交互的庫。92.2.3MATLAB的圖視系統
MATLAB的圖形可視能力在所有數學軟體中是首屈一指的。MATLAB的圖形系統有高層和低層兩個部分組成。高層指令友善、簡便;低層指令細膩、豐富、靈活。MATLAB有比較完備的圖形標識指令。2.2.4MATLAB與外部程式的交互
出現了諸如Mediva等商品軟體,能把MATLAB的M檔轉變為獨立於平臺的EXE可執行檔,出現了許多專用軟體把MATLAB直接當計算引擎使用。10第2章MATLAB的基本使用方法基本概念基本運算MATLAB的數據類型常用函數標點符號的使用常用操作命令和鍵盤技巧112.1基本概念在MATLAB中,經常用到標量、向量、矩陣和數組的概念。無論在MATLAB中變數賦何值,在內存中均以矩陣的形式存在。標量:是1×1矩陣,即只含有一個數的矩陣向量:是1×n或n×1的矩陣,即只有一行或一列的矩陣矩陣:是一個矩形數組,即二維數組,其中向量和標量都是矩陣的特例,0×0矩陣為空矩陣數組:數組為矩陣的延伸,其中矩陣和向量都是數組的特例122.2基本運算
MATLAB最主要的功能便是數值計算,主要有以下基本運算符號:符號功能實例+加法2+3-減法2-3*乘法2*3/、\除法2/3、2\3^乘方2^3131.MATLAB語句有兩種常見的形式(1)表示式(2)變數=運算式在第一種情況下,計算結果自動賦給名為ans(answer)的變數;在第二種情況下,結果自動賦給等號左邊的變數。2.MATLAB的求值次序(1)算式從左到右執行;(2)乘方的優先順序最高,乘、除次之,最後是加減,括弧的優先順序別最高;(3)在有多層括弧的情況下,從括弧的最裏面到最外面逐漸擴展。142.3MATLAB的數據類型1.常量在MATLAB中有一些特定的變數,已被預定義某個特定的值,因此這些變數被稱為常量(預定義變數)。ans用作結果的默認變數i、j複數單位pi圓周率(π)nargout函數輸出參數個數eps浮點數相對誤差realmin最小正浮點數inf無窮大realmax最大正浮點數NaN、nan不定數bitmax最大正整數152.變數在程式執行過程中其值可以變化的量為變數,變數在電腦中佔有一定的存儲單元,在該單元記憶體放該變數的值。
MATLAB對於變數命名有以下規則:MATLAB不需對變數進行事先說明及指定類型;變數名長度不超過63位字元(英文字母、數字、下劃線);變數名區分大小寫;變數名必須以字母開頭,變數名中可以包含字母、數字和下劃線,但不得出現標點符號;關鍵字不能作為變數名。16(1)who和whoswho和whos都用來列出matlab工作區中已駐留的變數清單,但不可顯示常量,而whos還可以列出變數的維數和性質。例:>>whoYourvariablesare:ab
>>whosNameSizeBytesClassa1x8016408doublearrayb1x8016408doublearrayGrandtotalis1602elementsusing12816bytes(2)clearclear用來清除工作區中的所有變數或部分變數,也可用來恢復常量的原值。例:>>clearab173.複數
MATLAB語言對複數的處理十分簡單,在處理複數問題時,不需進行其他任何附加操作。定義複數格式如下:
z=a+bi或z=a+bj z=a+b*i或z=a+b*j>>a=2+3i
a=2.0000+3.0000i>>a=2+3ja=2.0000+3.0000i>>b=2+3*ib=2.0000+3.0000i>>b=2+3*jb=2.0000+3.0000i>>a=1a=1>>b=1b=1>>c=a+bi???Undefinedfunctionorvariable'bi'.注意:只有數字才可以與i、j直接相連,運算式則不可以,應用“*”相連。184.數值顯示格式任何MATLAB語句的執行結果都可以在螢幕上顯示,同時賦值給指定的變數,沒有指定變數時,賦值給一個特殊的變數ans,數據的顯示格式由format命令控制。
Format只是影響結果的顯示,不影響其計算與存儲;MATLAB總是以雙字長浮點數(雙精度)來執行所有的運算。如果結果為整數,則顯示沒有小數;如果結果不是整數,則輸出形式有:format(short):短格式(5位定點數)99.1253formatlong:長格式(15位定點數) 99.12345678900000formatshorte:短格式e方式9.9123e+001formatlonge:長格式e方式 9.912345678900000e+001format
bank:2位十進位99.12formathex:十六進制格式194.數據的輸出格式在MATLAB系統中,數據的存儲和計算都是以雙精度進行的,但是用戶可以改變螢幕上顯示的格式,所用指令為format。formatformatshort小數點後4位有效數字,大於1000的實數用科學記數法表示formatlongg選擇15位定點和15位科學記數法中更好的進行表示formatlong15位定點數表示formathex使用16進制進行表示formatshorte5位科學記數法表示formatbank用元、角、分進行表示formatlonge15位科學記數法表示format+顯示大矩陣用,正、負、零分別用+、-、空格表示formatshortg選擇5位定點和5位科學記數法中更好的進行表示formatrationalformatrat用分式表示202.4MATLAB的常用函數
MATLAB提供了豐富的函數,只要正確調用,便可獲得正確結果。sin正弦angle相角asin反正弦conj共軛複數cos余弦imag取複數虛部acos反余弦real取複數實部tan正切fix取整數atan反正切mod取餘數exp指數運算round四捨五入log自然對數sqrt平方根log10以10為底對數abs絕對值211.三角函數
sin、cos、tan、cot(餘切)、asin、acos、atan、acot(反餘切)注意事項:①小寫!②函數應該出現在等式的右邊。③運算式寫在()裏,例sin(x),其餘運算和數學一樣。④三角函數以弧度為單位計算。例如:
sin(1)表示的不是sin1°而是sin57.28578°222.指數運算函數
exp、log、log10、log2、sqrt、power(求冪)例:設a=5.67,b=7.8,求
>>a=5.67;>>b=7.8;>>exp(a+b)/log10(a+b)ans=6.2677e+005>>log(b-a)ans=0.7561>>power(a,b)ans=7.5500e+005233.複數運算函數
abs、angle、real、imag、conj、complex例:>>x=1+2i;>>abs(x)ans=2.2361>>angle(x)ans=1.1071>>real(x)ans=1>>imag(x)ans=2>>conj(x)ans=1.0000-2.0000i>>y=complex(1,2)y=1.0000+2.0000i244.取整求餘函數
fix、round、floor、ceil、mod、rem、sign>>floor(x)(取小整)ans=9>>x=9.4;>>ceil(x)ans=10>>floor(x)ans=9例:>>x=9.8;>>fix(x)(舍掉小數)ans=9>>round(x)(四捨五入)ans=10>>ceil(x)(取大整)ans=1025a=[-1.9,-0.2,3.4,5.6,7.0,2.4+3.6i]fix(a)(舍掉小數)ans=Columns1through5-1.000003.00005.00007.0000Column62.0000+3.0000i
>>floor(a)(取小整)ans=Columns1through5-2.0000-1.00003.00005.00007.0000Column62.0000+3.0000i26mod:不管“被除數”是正是負,“餘數”的符號與“除數”的符號相同
>>mod(5,2) >>mod(-5,2)
ans=1 ans=1
>>mod(5,-2) >>mod(-5,-2)
ans=-1 ans=-1rem:不管“除數”是正是負,“餘數”的符號與“被除數”的符號相同
>>rem(5,2) >>rem(5,-2)ans=1 ans=1
>>rem(-5,2) >>rem(-5,-2)
ans=-1 ans=-127>>x=9;>>y=2;>>rem(x,y)ans=1>>mod(x,y)ans=1>>rem(9,-4)ans=1>>mod(9,-2)ans=-1>>sign(9)ans=1>>sign(-9)ans=-1>>sign(0)ans=028例:計算下式的結果,其中x=-3.5°,y=6.7°。>>x=-3.5*pi/180;>>y=6.7*pi/180;>>sin(abs(x)+abs(y))/sqrt(cos(abs(x+y)))ans=0.177229標點符號定義標點符號定義;區分行,取消運行顯示等.小數點,區分列,函數參數分隔符號等…連接語句:在數組中應用較多‘字串的識別字號()指定運算優先順序等=賦值符號[]矩陣定義的標誌等!調用操作系統運算{}用於構成單元數組等%注釋語句的標識2.5MATLAB的標點符號
MATLAB提供了豐富的函數,只要正確調用,便可獲得正確結果。302.6常用操作命令和鍵盤技巧在使用MATLAB編制程式時,掌握一些常用的操作命令和鍵盤操作技巧,可以起到事倍功半的效果。常用操作指令cd顯示或改變工作目錄clf清除圖形窗口clc清除工作窗dir顯示當前目錄下文件常用鍵盤操作和快捷鍵↑(Ctrl+p)調用上一行Home(Ctrl+a)游標置於行首↓(Ctrl+n)調用下一行End(Ctrl+e)游標置於行尾Ctrl+←游標左移一單詞Alt+BackSpace回復上一次刪除Ctrl+→游標右移一單詞Ctrl+c終止當前指令3.1矩陣的構建3.1.1直接輸入創建矩陣創建矩陣最簡單的方法就是直接輸入矩陣元素,輸入格式有以下的要求:整個矩陣以“[]”作為首尾;行與行之間用分號“;”或回車鍵分隔;每行中的元素用“,”或空格分隔;矩陣中的元素可以是數字或者運算式;如果矩陣中沒有元素,這樣的矩陣稱為空陣(EmptyMatrix)。【例1】矩陣的分行輸入
A=[1,2,3 4,5,6 7,8,9]
顯示結果如下:
A= 123 456 789》a=1;b=2;c=3;》x=[5bc;
a*ba+cc/b]x=5.0002.0003.0002.0004.0001.500【例2】命令窗口中輸入》y=[245;368]y=245368>>a=[123;456;789]a=123456789>>b=[1sin(pi/6)sqrt(9)3+560]b=1.00000.50003.00008.00006.000003.1.2利用內部函數產生矩陣
1.利用內部函數可以很容易生成一些常見的特殊矩陣,常用函數如下:eye(m,n)產生單位矩陣zeros(m,n)產生元素全為0的矩陣ones(m,n)產生元素全為1的矩陣rand(m,n)產生均勻分佈的隨機元素矩陣,範圍0~1randn(m,n)產生正態分佈的隨機元素矩陣diag(x)產生矩陣x的對角陣說明:當eye、zeros、ones、rand、randn函數只有一個參數n時,則產生n×n的方陣。>>eye(3)ans=100010001>>eye(3,4)ans=100001000010>>zeros(3)ans=000000000>>ones(3,4)ans=111111111111>>a=magic(3)a=816357492>>diag(a)ans=852例如:》eye(2,3)ans=100010》zeros(2,3)ans=000000》ones(2,3)ans=111111》eye(2)ans=1001》zeros(2)ans=0000》ones(2)ans=11113.1.3數組的構建在MATLAB中數組可以看作行向量,即只有一行的矩陣,MATLAB創建數組可用以下特殊命令:1.冒號生成法(初值:步長:終值)>>0:0.4:2ans=00.40000.80001.20001.60002.0000初值=0,終值=2,步長=0.4,步長若省略,默認間隔1>>a=1:4;b=1:2:7;>>c=[ab]c=12341357>>d=[a910]d=12349102.linspace函數
linspace(a,b,n)差值=(b-a)/(n-1)>>a=linspace(0,1,4)a=00.33330.66671.0000初值=0,終值=1,元素個數=43.logspace函數
logspace(a,b,n)公比=10^((b-a)/(n-1))>>logspace(0,2,5)ans=1.00003.162310.000031.6228100.0000初值=100,終值=102,元素個數=5,公比=100.53.1.4從外部的數據檔中導入矩陣3.2矩陣的元素3.2.1矩陣元素的下標表示
1.全下標表示一個m×n矩陣A的第i行,第j列元素表示為A(i,j),即由行下標和列下標表示,行列數從1開始。注意:當給元素賦值時,如果超出矩陣範圍,則自動擴充矩陣;當取值時,若超出矩陣範圍,則提示錯誤。>>a=[12;34];>>a(1,2)=9;>>a(2,3)=8;>>aa=190348>>a(2,4)???Indexexceedsmatrixdimensions.2.單下標表示將矩陣的所有列按從左到右的順序接成“一維長列”,然後對元素進行編號。一個m×n矩陣A的元素A(i,j)對應的下標為(j-1)*m+i。>>a=[123;456];>>a(1,2)ans=2>>a(3)ans=2>>a(5)=10a=12104563.2.2子矩陣
1.全下標表示(1)a([ij],[kl]):行數為i、j,列數為k、l的元素構成子矩陣(2)a(i:j,k:l):取行數為i~j,列數為k~l的元素構成的子矩陣(3)a(i:j,:):取行數為i~j,所有列的元素構成的子矩陣(4)a(end,k:j):取行數最大值,列數為k~j的元素構成的子矩陣2.單下標表示a([ij;kl]):取單下標為i、j、k、l的元素構成子矩陣。>>a=magic(5)a=17241815235714164613202210121921311182529>>a([12],[34])ans=18714>>a(1:2,3:5)ans=181571416>>a(1:2,:)ans=1724181523571416>>a(end,1:2)ans=1118>>a([13;45])(取單下標為1、2、3、5的元素構成子矩陣)ans=17410113.2.3矩陣元素的刪除刪除矩陣元素可以簡單的將該元素賦值為空矩陣(用[]表示)。>>a=rand(3,4)a=0.45650.44470.92180.40570.01850.61540.73820.93550.82140.79190.17630.9169>>a(2)=[](把第2個元素賦值為空)a=
Columns1through60.45650.82140.44470.61540.79190.9218Columns7through110.73820.17630.40570.93550.91693.2.4矩陣元素的數量1.numel函數
n=numel(a):計算矩陣a中元素的總數2.size函數d=size(a)
:d=[mn],m為a的行數,n為a的列數[mn]=size(a):m為a的行數,n為a的列數m=size(a,dim):m為矩陣a的第dim維元素的數量(1表示列,2表示行)>>a=rand(2,3)a=0.28440.06480.58280.46920.98830.4235>>d=size(a)d=23>>m=size(a,2)(第2行元素的數量)m=3>>numel(a)ans=63.3矩陣與數組運算MATLAB算術運算矩陣算術運算數組算術運算矩陣算術運算:按照線性代數運算法則定義數組算術運算:按照元素逐個執行3.3.1矩陣的運算
+加法-減法*乘法^冪\左除/右除’轉置1.矩陣的加減法矩陣的加減法是對應元素的加減法,只有當兩個矩陣維數相同或者其中一個為標量時,才可以進行加減法運算。>>a=[12;34];>>b=[56;78];>>a+bans=681012>>3+aans=4567>>b-3ans=23452.矩陣的乘法矩陣的乘法使用“*”運算符,兩個矩陣要相乘,只有當前一矩陣的列數與後一矩陣行數相等或者其中一個為標量時才能進行。>>a=[12;34];>>b=[567;8910];>>a*bans=212427475461>>b*a???Errorusing==>*Innermatrixdimensionsmustagree.>>3*aans=369123.矩陣的除法矩陣的除法有左除和右除兩種,分別用“\”和“/”表示。通常矩陣除法可以用來求未知矩陣。若A*X=B,則X=A\B
若X*A=B,則X=B/A>>a=[12;34];>>b=[567;8910];>>c=a*bc=212427475461>>a\cans=5.00006.00007.00008.00009.000010.0000>>c/bans=1.00002.00003.00004.0000例:求解以下方程>>A=[132;223;311]A=132223311>>B=[1;10;7]B=1107>>A\Bans=2-344.矩陣的乘方矩陣的乘方使用“^”運算符,如A^P,當P為整數時,該指令運算結果可做如下解釋:當P>0,表示方陣A直接自乘P次;當P<0,表示A的逆陣自乘P次後的結果,或者A自乘P次後的逆陣;當P=0,表示與A維數相同的單位陣。>>a=[12;34]a=1234>>a^2ans=7101522>>a^0ans=1001>>a^(-2)ans=5.5000-2.5000-3.75001.75005.矩陣的轉置矩陣的轉置使用“’”運算符,矩陣的轉置就是將第i行第j列的元素和第j行第i列的元素進行互換。對於有複數元素的矩陣A,A’為共軛轉置,A.’為非共軛轉置。>>a=[12;34]a=1234>>a'ans=1324>>a=[1+i2+i;3+i4+i];>>a'ans=1.0000-1.0000i3.0000-1.0000i2.0000-1.0000i4.0000-1.0000i>>a.'ans=1.0000+1.0000i3.0000+1.0000i2.0000+1.0000i4.0000+1.0000i6.矩陣的逆(inv)在MATLAB中,使用函數inv計算矩陣的逆矩陣。A是可逆矩陣的充分必要條件是|A|≠0,即可逆矩陣是非奇異方陣。>>a=magic(3)a=816357492>>inv(a)ans=0.1472-0.14440.0639-0.06110.02220.1056-0.01940.1889-0.1028>>a*inv(a)ans=1.00000-0.0000-0.00001.000000.000001.0000>>a^(-2)ans=0.0293-0.0124-0.0124-0.01240.0293-0.0124-0.0124-0.01240.0293>>inv(a^2)ans=0.0293-0.0124-0.0124-0.01240.0293-0.0124-0.0124-0.01240.02937.方陣的行列式(det)方陣和行列式是兩個不同的概念,n階方陣是n2個數按一定方式排成的數表,n階行列式則是這些數按一定的運算法則確定的一個數。在MATLAB中,求方陣的行列式的函數是det。>>a=magic(3)a=816357492>>det(a)ans=-3608.矩陣的特徵值(eig)在MATLAB中,以函數eig計算矩陣的特徵值,並以向量的形式存放。如果AX=λX存在非零解向量,則稱λ為A的一個特徵值,相應的非零解向量X稱為與λ相對應的特徵向量。>>G=[120;25-1;410-1];>>eig(G)ans=3.73210.26791.0000>>[p,q]=eig(G)p=-0.2440-0.91070.4472-0.33330.33330.0000-0.9107-0.24400.8944q=3.73210000.26790001.00009.矩陣的特徵多項式(poly)在MATLAB中,以函數poly計算矩陣的特徵多項式。設A為n階方陣,如果λ和n維非零列向量X使關係式AX=λX成立,那麼(A-λE)X=0稱為矩陣A的特徵方程,|A-λE|稱為方陣A的特徵多項式。>>a=[-211;020;-413];>>poly(a)ans=1-304>>roots(ans)ans=2.0000+0.0000i2.0000-0.0000i-1.0000>>eig(a)ans=-12210.矩陣的秩(rank)在MATLAB中,以函數rank計算矩陣的秩。設在矩陣A中存在一個不等於0的r階子式D,且所有(r+1)階子式全為0,那麼稱D為方陣A的最高階非零子式,r為矩陣A的秩。>>a=magic(4)a=16231351110897612414151>>rank(a)ans=3>>det(a)ans=03.3.2數組的運算
.+加法.-減法.*乘法.^冪.\左除./右除.’轉置數組的運算操作都是對元素逐個進行的。數組運算符與矩陣運算符的區別便是多一個小黑點。>>a=[123];>>b=[456];>>a.*bans=41018>>a.^2ans=149>>a.\bans=4.00002.50002.0000>>a=[1+j
2+j
3+j]a=1.0000+1.0000i2.0000+1.0000i
3.0000+1.0000i>>a.‘(轉置)ans=1.0000+1.0000i2.0000+1.0000i3.0000+1.0000i>>a=ones(3);>>b=magic(3)b=816357492>>a*bans=151515151515151515>>a.*bans=816357492>>b^2(對矩陣求平方)ans=916767679167676791>>b.^2(對元素求平方)ans=6413692549168143.4矩陣關係運算與邏輯運算說明:(1)運算式輸入:非0—“邏輯真”,0—“邏輯假”(2)運算式輸出:1—“邏輯真”,0—“邏輯假”3.4.1關係運算兩個維數相同的矩陣進行比較:相對應元素進行比較,結果為一個同維數矩陣;矩陣和標量進行比較:標量和矩陣中的每一個元素進行比較,結果為一個同維數矩陣。關係操作符<小於>=大於等於>大於==等於<=小於等於~=不等於>>a=[12;34];>>b=[13;44];>>a<bans=0110>>a>bans=0000>>a==bans=1001>>a==2ans=0100>>a<=bans=1111<、<=、>、>=僅比較實部,而==、~=同時比較實部和虛部。3.4.2邏輯運算如果A和B是維數相同的矩陣,或者其中一個是標量,則可以對矩陣進行邏輯運算。與A&B或and(A,B)或A|B或or(A,B)非~A或not(A)異或xor(a,b)>>a=[0101];>>b=[0110];>>and(a,b)ans=0100>>a&bans=0100>>a|bans=0111>>xor(a,b)ans=0011>>a&1ans=01013.5各種運算符的優先順序
MATLAB對各種運算的優先順序別做了規定。計算時,遵守的規定是較高優先順序先於較低優先順序,相同優先順序遵從從左到右原則。優先順序運算符最高()↓.’、’、.^、^↓~↓.*、*、./、/、.\、\↓+、-↓:↓<、<=、>、>=、~=、==↓&最低|>>x=5;y=3;z=2;>>X=ones(3);>>Y=magic(3)Y=816357492>>Z=zeros(3);>>a=x^2*(X'+Y)+za=2275217710215220212725277>>b=Y&Z+xb=111111111>>c=Y~=Z+X>=Y*xc=0000000003.6基本統計處理3.6.1查最大值(max)1.C=max(A)
返回矩陣A各列的最大值;若A為向量,返回該向量的最大值。2.[C,I]=
max(A)
將矩陣A各列中的最大元素值及其該元素的位置賦予行向量C與I,當A是向量時,C、I是標量。3.[C,I]=
max(A,[],dim)
按矩陣A的第dim維的方向查取最大的元素及其該元素的位置賦予向量C與I。若dim=1,按列操作;若dim=2,按行操作。>>x=[247483];>>m=max(x)m=8>>[m,n]=max(x)m=8n=5>>x=[351;946];>>max(x)ans=956>>[m,n]=max(x)m=956n=212>>[m,n]=max(x,[],1)m=956n=212>>[m,n]=max(x,[],2)m=59n=213.6.2查取最小值(min)
min函數用來求取數據序列中的最小值,使用方法和max函數相同。3.6.3求中值(median)1.Y=median(X):返回矩陣X各列元素的中值賦予行向量Y;若X為向量,Y為標量。2.Y=median(X,dim):將數組X的第dim維方向的元素求其中值賦予向量Y;若dim=1,按列操作(默認),若dim=2,按行操作。>>x=[351;946];>>median(x)ans=6.00004.50003.5000>>median(x,2)ans=363.6.4求和(sum)1.Y=sum(X):返回矩陣X各列元素的和賦予行向量Y;若X為向量,Y為標量。2.Y=sum(X,dim):將數組X的第dim維方向的元素的和賦予向量Y;若dim=1,按列操作,若dim=2,按行操作。>>x=[351;946];>>sum(x)ans=1297>>sum(ans)ans=28>>sum(x,2)ans=9193.6.5求平均值(mean)1.Y=mean(X):返回矩陣X各列元素的平均值賦予行向量Y;若X為向量,Y為標量。2.Y=mean(X,dim):將數組X的第dim維方向的元素的平均值賦予向量Y;若dim=1,按列操作,若dim=2,按行操作。>>a=[123;456]a=123456>>mean(a)ans=2.50003.50004.5000>>mean(a,2)ans=253.6.6求積(prod)1.Y=prod(X):返回矩陣X各列元素的積賦予行向量Y;若X為向量,Y為標量。2.Y=prod(X,dim):將數組X的第dim維方向的元素的積賦予向量Y;若dim=1,按列操作,若dim=2,按行操作。>>a=[123;456]a=123456>>prod(a)ans=41018>>prod(a,2)ans=61203.6.7排序(sort)1.Y=sort(X):將矩陣X的各列元素昇冪排列。2.Y=sort(X,dim):將矩陣X的第dim維元素昇冪排列;若dim=1,按列操作,若dim=2,按行操作。3.Y=sort(X,mode):按照mode模式對矩陣X進行排列,若mode為’ascend’表示昇冪排列,若mode為’descend’表示降序排列。>>x=[375;683;042];>>sort(x)ans=042373685>>sort(x,2)ans=357368024>>sort(x,2,'descend')ans=7538634203.7多項式運算多項式是形如p(x)=a0xn+a1xn-1+…+an-1x+an的式子,在MATLAB中,多項式用行向量表示P=[a0a1…an-1an]。3.7.1多項式的創建1.直接輸入係數直接輸入向量,MATLAB將按降冪自動將向量的元素分配給多項式各項的係數,該向量可以是行向量或列向量。>>P=[3501012];>>y=poly2sym(P)y=3*x^5+5*x^4+x^2+122.由多項式的根逆推多項式若已知某多項式的根,可用poly函數反推出與其相對應的多項式。>>root=[-4-2+2i-2-2i5]root=-4.0000
-2.0000+2.0000i-2.0000-2.0000i5.0000>>p=poly(root)p=13-16-88-160>>poly2sym(p)ans=x^4+3*x^3-16*x^2-88*x-1603.7.2多項式的運算1.多項式的求值(1)代數多項式求值:polyval函數
polyval(P,X)計算向量P為係數的多項式在點X的值,如果X是矩陣或者向量,該命令對X的每個元素都進行計算。(2)矩陣多項式求值:polyvalm函數
Y=polyvalm(P,X)計算向量P為係數的多項式在矩陣X的值,向量X必須為方陣。Y=P(1)×Xn+P(2)×Xn-1+…+P(N)×X+P(N+1)×I>>p=[123];>>poly2sym(p)ans=x^2+2*x+3>>a=[12;34];>>polyval(p,2)ans=11>>polyval(p,a)ans=6111827>>polyvalm(p,a)ans=12142133>>b=[123;456];>>polyvalm(p,b)???Errorusing==>polyvalmMatrixmustbesquare.2.多項式的根求多項式的根,即求使多項式為零的值。設多項式由行向量p表示,其係數按降序排列,使用roots函數計算多項式的根,格式為roots(p)。例:計算多項式x4+3x2+12x-7的根。>>p=[10312-7]p=10312-7>>roots(p)ans=0.7876+2.4351i0.7876-2.4351i-2.08720.5121>>polyval(p,ans)ans=1.0e-013*-0.0178+0.8793i-0.0178-0.8793i0.195403.多項式的四則運算(1)加法和減法如果兩個多項式的向量階數相同,可直接進行加減法計算;如果向量階數不同,不能直接進行運算,需要在低階多項式的前面補0,使其具有相同的階數。>>a=[8228];b=[6161];>>poly2sym(a)ans=8*x^3+2*x^2+2*x+8>>poly2sym(b)ans=6*x^3+x^2+6*x+1>>c=a+bc=14389>>poly2sym(c)ans=14*x^3+3*x^2+8*x+9>>d=a-bd=21-47>>poly2sym(d)ans=2*x^3+x^2-4*x+7>>e=[245];>>d+e???Errorusing==>plusMatrixdimensionsmustagree.>>d+[0e]ans=23012>>poly2sym(ans)ans=2*x^3+3*x^2+12(2)乘法使用conv函數對多項式進行乘法計算,其格式為conv(a,b)例:計算(x3+2x2+3x+4)(5x3+6x2+7x+8)>>a=[1234];b=[5678];>>poly2sym(a)ans=x^3+2*x^2+3*x+4>>poly2sym(b)ans=5*x^3+6*x^2+7*x+8>>conv(a,b)ans=5163460615232>>poly2sym(ans)ans=5*x^6+16*x^5+34*x^4+60*x^3+61*x^2+52*x+32(3)除法使用deconv函數對多項式進行除法計算。
[q,r]=deconv(v,u):用多項式v除以多項式u,商賦予q,餘數賦予r。
deconv是conv的逆運算,v=conv(u,q)+r。>>a=[1234];b=[5678];>>c=conv(a,b);>>[q,r]=deconv(c,a)q=5678r=0000000>>c=c+[0004321];>>[q,r]=deconv(c,a)q=56712r=0000-5-10-15(4)求導polyder(P):對多項式P求導,並返回求導結果polyder(P,Q):相當於polyder(P*Q)[p,q]=polyder(P,Q):求P/Q的導數,導數的分子存入p,分母存入q。例:計算多項式(3x2-2x+1)(4x2+5x+6)的導數>>a=[3-21];b=[456];>>polyder(a,b)ans=482124-7所以所求結果為:48x3+21x2+24x-7例:計算有理分式1/(x2+5)的導數>>a=[1];b=[105];>>[p,q]=polyder(a,b)p=-20q=1010025所以結果為:-2x/(x4+10x2+25)814.1二維圖形的繪製4.1.1基本繪圖命令在MATLAB中,plot是繪製二維圖形的最基本函數,它針對向量或矩陣的列繪製曲線。在使用plot之前,必須首先定義好曲線上每一點的x及y座標。plot命令有以下使用格式:1.plot(x,y):以x元素為橫坐標,y元素為縱坐標繪製曲線。2.plot(x1,y1,x2,y2…):繪製多條曲線。82例:繪製正弦波型>>t=0:0.1:2*pi;>>y=sin(t);>>plot(t,y)83例:繪製正弦和余弦波形>>t=0:0.1:2*pi;>>y1=sin(t);>>y2=cos(t);>>plot(t,y1,t,y2)843.plot(x):當x為一向量時,以x元素的值為縱坐標,x的序號為橫坐標繪製曲線。(1)如果x為實數向量,其元素個數為m,則plot(x)等價於plot(y,x),y=1:m。例:>>x=[13639];>>plot(x)85(2)如果x為實數矩陣,則把x按列方向分解為幾個列向量,分別進行繪製。>>x=[123;567;123];>>plot(x)(1,5,1)(2,6,2)(3,7,3)86(3)如果x為一複數向量,plot(x)等價plot(real(x),imag(x))。
>>a=[1+2i4+3i2+6i;2+3i3+8i2.3+3i];>>plot(a)(1,2)(2,3)(4,3)(3,8)(2.3,3)(2,6)874.1.2曲線的色彩、線型和數據點形
plot(x,y,s):繪製不同色彩、線型和數據點形的圖形,其中s為一個字串。1.色彩和線型線型-:-.--實線(默認)點線點劃線虛線色彩bgrcmykw藍綠紅青紅紫黃黑白默認設置:曲線一律用“實線線型”;不同曲線將按色彩的前7種顏色迴圈著色,依次為藍、綠、紅、青、紅紫、黃、黑等。882.數據點形符號含義符號含義.實心黑點v朝下三角形o空心圓圈^朝上三角形x叉字元<朝左三角形+十字符>朝右三角形*星號p五角星s正方形h六角形d菱形符89例:用不同的顏色和線型繪製曲線。>>x=0:0.1:2*pi;>>y1=sin(x);>>y2=cos(x);>>plot(x,y1,‘b-.’,x,y2,‘gh’)(綠色六角形)904.1.3設置坐標軸和文字標注1.設置坐標軸命令含義axis([xminxmaxyminymax])設定座標範圍axisauto將坐標系統返回到自動缺省狀態axissquare將當前圖形設置為方形axisequal縱、橫坐標採用等長刻度axisoff關閉坐標系統axison顯示坐標系統912.設置分格線和座標框(1)使用grid命令顯示分格線gridon %畫出分格線gridoff %不畫分格線grid %是否畫分格線的切換指令(2)使用box命令顯示座標框boxon %使當前座標框呈封閉形狀boxoff %使當前座標框呈開啟形狀box %在以上命令間切換92gridonboxongridoffboxoff933.文字標注(1)添加圖名title(‘圖形標題’)(2)添加坐標軸名xlabel(‘x軸標記’)ylabel(‘y軸標記’)(3)添加圖例legend(s,pos)legendoff %擦除當前圖中的圖例說明:s為圖例中的文字注釋;pos表示圖例在圖中的位置的指令符。pos有1、2、3、4、0、-1共六種選項。其中1是默認。94例:文字標注例題>>x=linspace(-5,5,100);>>y1=100*sin(x);>>y2=x.^4-22*x.^2-6*x+10;>>plot(x,y1,x,y2);>>title('文字標注例題')>>xlabel('x的取值範圍');>>ylabel('y的值');>>legend('sinx','x^4-22x^2-6x+10');9596(4)添加文字注釋text(X,Y,’文字注釋’); %在座標(X,Y)座標處添加文字注釋gtext(’文字注釋’) %利用滑鼠添加文字注釋例:>>x=0:0.1:2*pi;>>y=sin(x);>>plot(x,y)>>text(pi,sin(pi),'y=sinx')97984.1.4多窗口繪製1.同一窗口多個子圖
subplot(m,n,p):將當前圖形窗口分成m*n個繪圖區,即每行n個,共m行。區號按行優先編號,且選定第p個區為當前活動區。2.多個圖形窗口
figure(n):產生新的圖形窗口,並且該窗口為活動窗口。若需要,還可以返回該窗口的識別號碼,稱該號碼為句柄。用戶可以通過句柄啟動或者關閉某圖形窗口,axis、xlabel、ylabel、title等命令也只對活動窗口有效。99>>x=0:0.1:2*pi;>>y_sin=sin(x);>>y_cos=cos(x);>>y_tan=tan(x);>>y_ctan=cot(x);>>subplot(2,2,1)>>plot(x,y_sin);>>title('sin(x)');>>axis([02*pi-11]);>>subplot(2,2,2)>>plot(x,y_cos);>>title('cos(x)');>>axis([02*pi-11]);>>subplot(2,2,3)>>plot(x,y_tan);>>title('tan(x)');>>axis([02*pi-8080]);>>subplot(2,2,4)>>plot(x,y_ctan);>>axis([02*pi-8080]);>>title('ctan(x)');例:在同一窗口內用四個子圖分別繪製正弦、余弦、正切、餘切函數。100101例:用兩個窗口分別繪製正弦、余弦函數。>>x=0:0.05:2*pi;>>y_sin=sin(x);>>y_cos=cos(x);>>H1=figure(1);>>plot(x,y_sin);>>figure(2);>>plot(x,y_cos);>>figure(H1);
>>title('y=sin(x)');1023.同一窗口多次重繪若在已存在圖形窗口中繼續添加新的內容,可以使用圖形保持命令hold。holdon:使當前內容保留,繪製新內容;holdoff:使當前內容不具備不被刷新的性質;hold:當前內容是否具有刷新性質的開關。例:在同一窗口內繪製正弦與余弦波形>>x=0:0.05:2*pi;>>y_sin=sin(x);>>y_cos=cos(x);>>plot(x,y_sin,'b');>>holdon>>plot(x,y_cos,'g');>>legend('sin(x)','cos(x)')>>holdoff1034.1.5二維特殊圖形1.極座標圖
polar(theta,rho):theta為極座標角度,rho為極座標半徑。>>theta=0:0.01:2*pi;>>rho=sin(theta).*exp(theta);>>polar(theta,rho,'-k')>>title('polarplot')104>>t=0:0.01:2*pi;>>s=abs(sin(2*t).*cos(2*t));>>polar(t,s,'r+')1052.階梯圖形
stairs(x,y)可以繪製階梯圖形。>>x=-2*pi:0.5:pi*2;>>y=sin(x);>>stairs(x,y)>>title('stairsplot')1063.條形圖形
bar(x,y)可以繪製條形圖形,適用於少量且離散的資料。>>x=-2*pi:0.5:pi*2;>>y=sin(x);>>bar(x,y)>>title(‘barplot')1074.填充圖形
fill(x,y,’c’):繪製並填充二維多邊圖形,x和y為二維多邊形頂點座標向量。字元‘c’規定填充顏色。>>t=(1/16:1/8:1)*2*pi;>>x=sin(t);>>y=cos(t);>>fill(x,y,'r')>>axissquare1085.扇形圖形(pie)(1)繪製扇形圖形,並可以附加說明。>>x=[1234];>>pie(x)>>pie(x,{‘east',‘
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論