ch2Matlab矩陣的生成與運算.ppt_第1頁
ch2Matlab矩陣的生成與運算.ppt_第2頁
ch2Matlab矩陣的生成與運算.ppt_第3頁
ch2Matlab矩陣的生成與運算.ppt_第4頁
ch2Matlab矩陣的生成與運算.ppt_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Matlab矩陣的生成與運算,安徽工業(yè)大學數(shù)理學院 侯為根 ,【例1-1】表示矩陣,一、MATLAB矩陣的生成,1、直接輸入法,將矩陣的元素用方括號括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。,A=1,2,3;4,5,6;7,8,0,A=1,2,3;4 5,6;7,8 0,2、利用M文件建立矩陣,對于比較大且比較復雜的矩陣,可以為它專門建立一個M文件。,【例1-3】利用M文件建立mymat矩陣。,(1) 啟動有關編輯程序或MATLAB文本編輯器,并輸入待建矩陣.,(2) 把輸入的內(nèi)容以純文本方式存盤(設文件名為mymat.m)。,(3) 運行該M文件,就會自動建立一個名為mymat的矩陣,可供以后使用。,A=4 10 1 6 2;8 2 9 4 7; 7 5 7 1 5;0 3 4 5 4;23 13 13 0 3,3、利用MATLAB函數(shù)建立矩陣,幾個產(chǎn)生特殊矩陣的函數(shù):zeros、ones、 eye、rand、randn、pascal、 magic(n)、 vander(V)、 hilb(n) 、 toeplitz(x,y)、compan(P) 。,這幾個函數(shù)的調(diào)用格式相似,下面以產(chǎn)生零矩陣的zeros函數(shù)為例進行說明。其調(diào)用格式是:,zeros(m) 產(chǎn)生mm零矩陣,zeros(m,n) 產(chǎn)生mn零矩陣。,zeros(size(A) 產(chǎn)生與矩陣A同樣大小的零矩陣,相關的函數(shù)有:length(A)給出行數(shù)和列數(shù)中的較大者,即length(A)=max(size(A);ndims(A)給出A的維數(shù)。,【例1-4】 分別建立33、32和與矩陣A同樣大小的零矩陣。,(1) 建立一個33零矩陣:zeros(3),(2) 建立一個32零矩陣:zeros(3,2),(3) 建立與矩陣A同樣大小零矩陣:zeros(size(A),【例1-5】 建立一個32的矩陣A,其元素為1到10中隨機選取的整數(shù)。,A=unidrnd(10,2,3),注:命令A=unifrnd(1,10,2,3)的元素為在區(qū)間1,10中隨機選取的實數(shù)。,x1 = rand(10000, 1); x2 = randn(10000, 1); subplot(2,1,1); hist(x1, 40); title(均勻分布); subplot(2,1,2); hist(x2, 40); title(高斯分布); set(findobj(gcf,type, patch),EdgeColor, w); % 改邊線為白色,【例1-6】產(chǎn)生10000個均勻均勻與正態(tài)分布的隨機數(shù),產(chǎn)生隨機數(shù)矩陣指令rand 和 randn,4、矩陣的合并,大矩陣可由方括號中的小矩陣建立起來。,A=1 2 3;4 5 6;7 8 0;,C=A,eye(size(A);ones(size(A),A,A=A;1 2 3;1;2;3;4;,【例1-8】使用小矩陣構(gòu)造大矩陣,5、冒號表達式(序列生成方法),冒號表達式的一般格式:v=s1:s2:s3,還可以用linspace函數(shù)產(chǎn)生行向量:linspace(a,b,n),linspace(a,b,n)與a:(b-a)/(n-1):b等價,【例1-9】 用不同的步距生成 (0,p) 間向量,V1=0:0.2:pi,V2=0:pi,V3=pi:-1:0,V4=0:0.2:pi,pi,V6=0:pi/100:pi,V5=linspace(0,pi,100),6、矩陣變形,常用改變矩陣形狀函數(shù)如下表,函數(shù)reshape(A,m,n),它在矩陣總元素保持不變的前提下,將矩陣A重新排成mn的二維矩陣。,【例1-5】 將4階魔方陣形變?yōu)?行8列的矩陣,reshaps(magic(4),2,8),A = 1 4 7 10; 2 5 8 11; 3 6 9 12,【例1-6】 將矩陣形A進行各類翻轉(zhuǎn)變化,左右翻轉(zhuǎn):,上下翻轉(zhuǎn):,旋轉(zhuǎn) 90o:,fliplr(A),flipud(A),rot90(A),flipdim(A,1)其等價于flipud(A),flipdim(A,2)其等價于fliplr(A),二、對矩陣元素的操作,矩陣A中,位于第i行、第j列的元素可表示為A(i,j) i與j即是此元素的下標(Subscript)或索引(Index) MATLAB中所有矩陣的內(nèi)部表示法都是以列為主的一維向量 A(i,j)和A(i+(j-1)*m)是完全一樣的m為矩陣A的列數(shù),1、矩陣的索引或下標,我們可以使用一維或二維下標來存取矩陣,A=4 10 1 6 2;8 2 9 4 7; 7 5 7 1 5;0 3 4 5 4;23 13 13 0 3,2 、矩陣元素,MATLAB允許用戶對一個矩陣的單個元素進行賦值和操作。例如 A(3,2)=200,也可以采用矩陣元素的序號來引用矩陣元素。矩陣元素按列編號,先第一列,再第二列,依次類推。,以mn矩陣A為例,矩陣元素A(i,j)的序號為:(j-1) *m+i。其相互轉(zhuǎn)換關系也可利用sub2ind和ind2sub函數(shù)求得。,可以借用矩陣可賦值的屬性對矩陣進行擴充。例如A為前面給出的矩陣,若將其擴充為67矩陣,可這樣賦值: A(6,7)=1,3. 子矩陣提取,(1) 利用冒號表達式獲得子矩陣, A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。, A(i:i+m,:)表示取A矩陣第ii+m行的全部元素;A(:,k:k+m)表示取A矩陣第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第ii+m行內(nèi),并在第kk+m列中的所有元素。, 利用一般向量和end運算符等來表示矩陣下標,從而獲得子矩陣。end表示某一維的末尾元素下標。,【例2-1】子矩陣提取,提取矩陣A 全部奇數(shù)行,所有列,將矩陣A 左右翻轉(zhuǎn),提取矩陣A的 3,2,1 行、2,3,4 列構(gòu)成子矩陣,將矩陣A 2,4列全變?yōu)?,B1=A(1:2:end,:),B3=A(:,end:-1:1),B2=A(3,2,1,2:4),A(:,2,4)=ones(4,2),注意:A(:)是按一維索引順序列出A的全部元素,4、利用空矩陣刪除矩陣的元素,在MATLAB中,定義 為空矩陣。給變量X賦空矩陣的語句為X= 。,【注意】X= 與clear X不同,clear是將X從工作空間中刪除,而空矩陣則存在于工作空間,只是維數(shù)為0。,將某些元素從矩陣中刪除,采用將其置為空矩陣的方法就是一種有效的方法。,【例2-2】將矩陣A 2,4行刪去,A(2,3,:=,A=1 2 3 4;5 6 7 8;9 10 11 12 A1=diag(A) A2=diag(A,1) A3=diag(A,-1) B1=diag(A1,1) B2=diag(A3,1),6 選取對角元素,7 選取上下)三角元陣,c1=tril(A) c2=tril(A,1) c3=tril(A,-1) d1=triu(A) d2=triu(A,1) D3=triu(A,-1),1. 數(shù)學運算,2. 邏輯運算,三、 Matlab基本運算,3. 比較運算,4. 集合運算,一、數(shù)學運算,MATLAB的基本算術運算有: (加)、(減)、*(乘)、/(右除)、(左除)、(乘方)、共軛轉(zhuǎn)置()正號(+),負號(-),【注意】運算是在矩陣意義下進行的,單個數(shù)據(jù)的算術運算只是一種特例。,2. 點運算,點運算符有.*、./、.和.。兩矩陣進行點運算是指它們的對應元素進行相關運算,要求兩矩陣的維參數(shù)相同。,1. 基本算術運算,1.轉(zhuǎn)置(.),冪次(.).共軛轉(zhuǎn)置(),矩陣冪次() 2.正號(+),負號(-) 3.乘法(.*),元素右除(./),元素左除(.),矩陣乘法(*),矩陣右除(/),矩陣左除() 4.加法(+),減法(-) 5.冒號(:)(例如: x = 1:2:5 等),數(shù)學運算符之優(yōu)先級:,同一類的運算符均具有相同的優(yōu)先度(Priority),因此在計算上,是由左至右依次完成,矩陣的數(shù)學運算,矩陣的加減與一般標量(Scalar)的加減類似 相加或相減的矩陣必需具有相同的維度,A = 12 34 56 20; B = 1 3 2 4; C = A + B C1= A-B,例1: 加減法運算,矩陣與純量可以直接進行加減,MATLAB 會直接將加減應用到每一個元素,A=1 2 3 2 1 + 5,矩陣的加減法運算,矩陣的乘法與除法,標量對矩陣的乘或除,可比照一般寫法,A = 1 2 3; 4 4 2; C = A/3 B = 2*A,欲進行矩陣相乘,必需確認第一個矩陣的列數(shù)( Column Dimension) 必需等于第二個矩陣的行數(shù)(Row Dimension),例2:矩陣的乘法,A = 1; 2; B = 3, 4, 5; C = A*B,矩陣除法,若A為非奇異方陣,則X=A-1B,若A為非奇異方陣,則X=BA-1,矩陣左除:AX = B,求 X MATLAB 求解:X=AB,最小二乘解,矩陣右除:XA = B,求 X MATLAB求解:X=B/A最小二乘解,注:若A為非奇異方陣,則A-1在Matlab中為inv(A),矩陣的次方運算,矩陣的次方運算,可由“”來達成,但矩陣必需是方陣,其次方運算才有意義,A = magic(3); B = A2,例3:,復數(shù)矩陣z,其“共軛轉(zhuǎn)置”矩陣(Conjugate Transpose)可表示成矩陣z,轉(zhuǎn)置和共軛轉(zhuǎn)置矩陣,i = sqrt(-1); % 單位虛數(shù) z = 1+i, 2; 3, 1+2i; w = z % 共軛轉(zhuǎn)置(注意z后面的單引號),例4: 矩陣共軛轉(zhuǎn)置,i = sqrt(-1); % 單位虛數(shù) z = 1+i, 2; 3, 1+2i; w = z. % 單純轉(zhuǎn)置(注意z后面的句點及單引號),想得到任何矩陣z的轉(zhuǎn)置(Transpose),則可表示成矩陣矩陣z.,例5:矩陣的轉(zhuǎn)置,若z為實數(shù),則z和z.的結(jié)果是一樣的,2、點運算,矩陣對應元素的直接運算,例如,A =1 2 3;4 5 6;7 8 0,B = A.A,3MATLAB數(shù)組運算函數(shù),1. 規(guī)則:設X=(xij)mn,則 f (X)=(f (xij)mn,sin cos tan cot sec csc asin acos atan acot asec acsc,2. 常用數(shù)學函數(shù),三角與反三角函數(shù),exp log log10 sqrt pow2,ceil fix floor round rem sign,abs angle conj imag real,指數(shù)與對數(shù),復變函數(shù),取整函數(shù),cart2sph cart2pol pol2cart sph2pol,坐標轉(zhuǎn)換,注:若要對函數(shù)進行矩陣運算,方法為:funm(X,f),4 矩陣分析計算命令,向量的p-norm,一個向量a的p-norm可以定義為,p=2 時,此即為向量 a 的長度,或稱歐氏長度(Euclidean Length),欲求一向量的p-norm,可使用norm指令norm(x,p),a = 3 4; x = norm(a, 1) % x = 7 y = norm(a, 2) % y = 5 z = norm(a, inf),注意:,矩陣A的p-norm可以定義如下:,例9: normMatrix,norm 指令亦可用于計算矩陣的 p-norm,A = 1 2 3; 4 5 6; 7 8 9; norm(A, 2),矩陣的秩,A = 1 2 3; 4 5 6; 7 8 9; rank(A),矩陣的行列式,A = 1 2 3; 4 5 6; 7 8 9; rank(A),B = 1 2 3; 4 5 6; 8 8 9; rank(B),矩陣的跡,A = 1 2 3; 4 5 6; 7 8 9; trace(A),矩陣的零空間,A = 1 2 3; 4 5 6; 7 8 9; null(A) null(A,r),Ax=0的解空間,正交化矩陣,s=orth(A) s = -0.2148 0.8872 -0.5206 0.2496 -0.8263 -0.3879,s=orth(B) s = -0.2074 -0.7711 -0.6019 -0.5070 -0.4415 0.7403 -0.8366 0.4587 -0.2994,A = magic(4), R = rref(A),A(:,1)+3*A(:,2)-3*A(:,3),A(1,:)+3*A(2,:)-3*A(3,:),矩陣梯形化與極大無關組,用法:R=rref(A) R,L=rref(A),R給出矩陣的梯形形式,L給出極大無關組向量所在的行或列,subspace(1,2,3,3,4,2) subspace(1,2,3,3,4,2;1,5,2) subspace(1,2,3;6,7,1,3,4,2;1,5,2),兩個子空間的夾角,用法:theta=subspace(v,u),chol(A) %三角分解,A=L*LT,lu(A) %A對稱,A=L*U,U,S,V=svd(A) %A=U*S*V,qr(A) %A=q*r(q正交陣,r三角陣),或 / %求解線性方程組,cond(A) %矩陣的條件數(shù),5、 MATLAB矩陣代數(shù)運算函數(shù),inv(A) %矩陣的逆,Cholesky分解是將一個對稱的正定矩陣分解為一個上三角矩陣和其轉(zhuǎn)置的乘積。,X=pascal(5) R=chol(X) C=R*R,LU分解是將原正方 (square) 矩陣分解成一個上三角形矩陣或是排列(permuted) 的上三角形矩陣和一個 下三角形矩陣,這樣的分解法又稱為三角分解。,命令格式為:,L,U=lu(A),L,U,P=lu(A),例如:,B=1 3 2; -2 -6 1; 2 5 7 L,U=lu(B) L*U,L,U,P=lu(B) P*L*U,QR分解法是將矩陣分解成一個正規(guī)正交矩陣與上三角形矩陣,矩陣A不必為正方矩陣。,A=1 3 2 5; -2 -6 1 6; 2 5 7 2 Q,R=qr(A) Q*Q Q*R,奇異值分解 (sigular value decomposition,SVD) 是另一種正交矩陣分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的計算時間。,U,S,V=svd(A),其中U和V代表二個相互正交矩陣,而S代表一對角矩陣。 和QR分解法相同者, 原矩陣A不必為正方矩陣。,A=1,2;3,1 S,V,D=svd(A),eig(A) %A*x=*x,V,D=eig(A) %A*V=V*D,eig(A,B) %A*x=*B*x,V,D=eig(A,B) %A*V=B*V*D,例:設A=pascal(4),B=magic(4),并使用下列函數(shù)進行計算,1.當數(shù)據(jù)為行向量或列向量時,函數(shù)對整個向量進行計算. 2.當數(shù)據(jù)為矩陣時,命令對列進行計算,即把每一列數(shù)據(jù)當成同一變量的不同觀察值。 max(求最大)、min(求最小)、mean(求平均值)、sum(求和)、std(求標準差)、cumsum(求累積和)、median(求中值)、diff(差分)、sort(升序排列)、sortrows(行升序排列)等等。,數(shù)據(jù)的簡單分析,觀察:生成一個36的隨機數(shù)矩陣,并將其各列排序、求各列的最大值與各列元素之和。 程序 rand(seed,1);A=rand(3,6), Asort=sort(A), Amax=max(A), Asum=sum(A) 結(jié)果,數(shù)據(jù)的簡單分析,矩陣的比較運算, =, , =, =,=, find(), all(), any(),isempty , isnan, isfinit, islogical, isglobal, isstr 等,MATLAB的關系運算符總是以矩陣內(nèi)元素對元素的方式作運算,比較兩元素之間關系:若成立結(jié)論為1,否則為0,1、數(shù)量間比較,各種允許的比較關系,例1:,a=3; b=5; a5 ab a=b,關系運算符的用法:,關系運算符的用法,A=1 2 3; 4 5 6;7 8,0 b=A5 A(b),3、同維矩陣間比較;返回0-1矩陣,2、矩陣與一數(shù)比較返回0-1矩陣,例2:給出矩陣A中大與5的元素值,例3: 接上例,設B=magic(3),B=magic(3); BA,find指令 : 可傳回非零元素索引,顯示一維索引或下標,元素索引,index=find(A5),可以將關系運算符返回的0-1矩陣,來進行矩陣的索(Indexing)求出在A矩陣中,滿足AijBij的元素,x = 0 1 2; 0 0 3 index = find(x) x(index),x(index)則是非零元素所形成的向量,要找出滿足某條件的二維索引或下標,2維索引,idx1,idx2=find(x5),idx1和idx2分別是符合條件之矩陣元素的列索引(Row Index)及行索引(Column Index),例:如何找出介于7和11的元素?,x = magic(5) x(find(7x&x11),【例2.4 】產(chǎn)生5階隨機方陣A,其元素為10,90區(qū)間的隨機整數(shù),然后判斷A的元素是否能被3整除并取出這些元素。,(1) 生成5階隨機方陣A。,A=fix(90-10+1)*rand(5)+10),(2) 判斷A的元素是否可以被3整除。,P=rem(A,3)=0,(3) 取出A中能被3整除的元素。,A1=A(P),矩陣的邏輯運算,MATLAB提供了4種邏輯運算符:,邏輯變量,&(與)、|(或)、(非)和xor異或。,對 double 變量來說,非 0 表示邏輯 1,設A與B為兩個命題,邏輯運算(相應元素間的運算),與運算,或運算,非運算,異或運算,A&B,A|B,A,Xor(A,B),數(shù)值為1則為True, 數(shù)值為0則為False,當所有向量元素為”真”(非零),則all指令傳回1,否則為0。 當任一向量元素為”真”(非零),則any指令傳回1,否則為0。,相關的指令有all及any:,a = 0 1 2 3 result1 = all(a) retult2 = any(a) result3 = any(a0),范例,all 及 any 指令也可以接受矩陣輸入,此時他們會對每一個行向量進行運算,【例2.5】在0,3區(qū)間,求y=sin(x)的值:要求消去負半波,方法1: x=0:pi/100:3*pi; y=sin(x); y1=(x2*pi).*y; %消去負半波 q=(xpi/3 %按要求處理第(2)步,方法2: x=0:pi/100:3*pi;y=sin(x); y1=(y=0).*y; %消去負半波 p=sin(pi/3); y2=(y=p)*p+(yp).*y1; %按要求處理第(2)步,MATLAB 的集合運算符(Set Operators)可將向量視為集合,來進行各種集合運算,集合運算符,x = 1 2 3 4 5 6; y = 1 1 5 5 9 9 9; un= union(x,y) %并集 it= intersect(x,y) %交集 sf= setdiff(x,y) %差集 sr= setxor(x,y) %XOR 運算 sq= unique(y) %取相異元素 im= ismember(9,y) %元素9是否屬于集合y,例:,多項式,1) P=a0, a1, , an-1, an表示如下n次多項式:,P(x)=a0xn+ a1xn-1+ + an-1x+ an,2) P=poly(A),若A為方陣,則P為特征多項式。,若A為一數(shù)組,則P表示以A中全部元為根多項式。,例:A=11 12 13; 14 15 16; 17 18 19,PA=poly(A) PPA=poly2str(PA,x),多項式運算,1) P=conv(p1,p2) %多項式乘積,2) q,r=deconv(p1,p2) %多項式相除,3) P=poly(A); dp=polyder(P) %多項式求導,4) pf=polyfit(X,Y,n) %多項式擬合,5) PA=polyval(P,s) %將值s代入多項式P,6) PM=polyvalm(P,s) % s是矩陣,矩陣運算,s可以是矩陣,數(shù)組運算,字符與字符串,本節(jié)介紹MATLAB用于處理字符(Characters)與字符串(Strings)的指令及相關數(shù)據(jù)型態(tài)。MATLAB 處理字符串的相關指令大部分都放在下列目錄之中: MATLAB根目錄toolboxmatlabstrfun 其中的”strfun”就是代表”String Functions”.若要查詢與字符和字符串相關的指令,可在 MATLAB 下輸入: help strfun 或是 help strings,本節(jié)簡介,數(shù)個字符(Characters)可以構(gòu)成一個字符串(Strings) 一個字符串是被視為

溫馨提示

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

最新文檔

評論

0/150

提交評論