第二章矩陣及其基本運算_第1頁
第二章矩陣及其基本運算_第2頁
第二章矩陣及其基本運算_第3頁
第二章矩陣及其基本運算_第4頁
第二章矩陣及其基本運算_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章矩陣及其基本運算第一頁,共六十八頁,2022年,8月28日一、變量和數(shù)據(jù)操作1.變量

變量命名

在MATLAB6.5中,變量名是以字母開頭,后接字母、數(shù)字或下劃線的字符序列,最多63個字符。在MATLAB中,變量名區(qū)分字母的大小寫。第二頁,共六十八頁,2022年,8月28日2.賦值語句

(1)變量=表達式

(2)表達式

其中表達式是用運算符將有關運算量連接起來的式子,其結果是一個矩陣。第三頁,共六十八頁,2022年,8月28日例2-1計算表達式的值,并顯示計算結果。

在MATLAB命令窗口輸入命令:

x=(0:0.1:10000).*pi./360;y1=sin(x);y2=sin(1.05*x);y3=sin(0.1*x);y4=sin(5*x);plot(x,y1+y2);plot(x,y3.*y4);拍現(xiàn)象信號調制第四頁,共六十八頁,2022年,8月28日3.預定義變量在MATLAB工作空間中,還駐留幾個由系統(tǒng)本身定義的變量。例如,用pi表示圓周率π的近似值,用i,j表示虛數(shù)單位。

預定義變量有特定的含義,在使用時,應盡量避免對這些變量重新賦值。第五頁,共六十八頁,2022年,8月28日二、MATLAB常用數(shù)學函數(shù)

MATLAB提供了許多數(shù)學函數(shù),函數(shù)的自變量規(guī)定為矩陣變量,運算法則是將函數(shù)逐項作用于矩陣的元素上,因而運算的結果是一個與自變量同維數(shù)的矩陣。

第六頁,共六十八頁,2022年,8月28日函數(shù)使用說明:

(1)三角函數(shù)以弧度為單位計算。

(2)abs函數(shù)可以求實數(shù)的絕對值、復數(shù)的模、字符串的ASCII碼值。

(3)用于取整的函數(shù)有fix、floor、ceil、round,要注意它們的區(qū)別。

(4)rem與mod函數(shù)的區(qū)別。rem(x,y)和mod(x,y)要求x,y必須為相同大小的實矩陣或為標量。第七頁,共六十八頁,2022年,8月28日三、矩陣的建立和引用1.矩陣的建立直接輸入法

最簡單的建立矩陣的方法是從鍵盤直接輸入矩陣的元素。具體方法如下:將矩陣的元素用方括號括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。第八頁,共六十八頁,2022年,8月28日利用冒號表達式建立一個向量

冒號表達式可以產生一個行向量,一般格式是:

e1:e2:e3

其中e1為初始值,e2為步長,e3為終止值。

在MATLAB中,還可以用linspace函數(shù)產生行向量。其調用格式為:

linspace(a,b,n)

其中a和b是生成向量的第一個和最后一個元素,n是元素總數(shù)。

顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價。

第九頁,共六十八頁,2022年,8月28日2.引用矩陣的元素

通過下標引用矩陣的元素,例如

A(3,2)=200

采用矩陣元素的序號來引用矩陣元素。矩陣元素的序號就是相應元素在內存中的排列順序。在MATLAB中,矩陣元素按列存儲,先第一列,再第二列,依次類推。例如

A=[1,2,3;4,5,6];

A(3)

ans=

2

顯然,序號(Index)與下標(Subscript)是一一對應的,以m×n矩陣A為例,矩陣元素A(i,j)的序號為(j-1)*m+i。其相互轉換關系也可利用sub2ind和ind2sub函數(shù)求得。第十頁,共六十八頁,2022年,8月28日3.矩陣拆分

(1)利用冒號表達式獲得子矩陣

①A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。

②A(i:i+m,:)表示取A矩陣第i~i+m行的全部元素;A(:,k:k+m)表示取A矩陣第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第i~i+m行內,并在第k~k+m列中的所有元素。

此外,還可利用一般向量和end運算符來表示矩陣下標,從而獲得子矩陣。end表示某一維的末尾元素下標。第十一頁,共六十八頁,2022年,8月28日4.特殊矩陣的生成

常用的產生通用特殊矩陣的函數(shù)有:

zeros:產生全0矩陣(零矩陣)。

ones:產生全1矩陣(幺矩陣)。

eye:產生單位矩陣。

rand:產生0~1間均勻分布的隨機矩陣。

randn:產生均值為0,方差為1的標準正態(tài)分布隨機矩陣。第十二頁,共六十八頁,2022年,8月28日例2-2分別建立3×3、3×2和與矩陣A同樣大小的零矩陣。

(1)建立一個3×3零矩陣。

zeros(3)

(2)建立一個3×2零矩陣。

zeros(3,2)

(3)設A為2×3矩陣,則可以用zeros(size(A))建立一個與矩陣A同樣大小零矩陣。

A=[123;456];%產生一個2×3階矩陣A

zeros(size(A))%產生一個與矩陣A同樣大小的零矩陣第十三頁,共六十八頁,2022年,8月28日例2-3建立隨機矩陣:

(1)在區(qū)間[20,50]內均勻分布的5階隨機矩陣。

(2)均值為0.6、方差為0.1的5階正態(tài)分布隨機矩陣。

命令如下:

x=20+(50-20)*rand(5)

y=0.6+sqrt(0.1)*randn(5)

第十四頁,共六十八頁,2022年,8月28日用于專門學科的特殊矩陣

(1)魔方矩陣

魔方矩陣有一個有趣的性質,其每行、每列及兩條對角線上的元素和都相等。對于n階魔方陣,其元素由1,2,3,…,n2共n2個整數(shù)組成。MATLAB提供了求魔方矩陣的函數(shù)magic(n),其功能是生成一個n階魔方陣。第十五頁,共六十八頁,2022年,8月28日例2-5將101~125等25個數(shù)填入一個5行5列的表格中,使其每行每列及對角線的和均為565。

M=100+magic(5)第十六頁,共六十八頁,2022年,8月28日(2)帕斯卡矩陣

我們知道,二次項(x+y)n展開后的系數(shù)隨n的增大組成一個三角形表,稱為楊輝三角形。由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。函數(shù)pascal(n)生成一個n階帕斯卡矩陣。第十七頁,共六十八頁,2022年,8月28日例2-7求(x+y)5的展開式。

在MATLAB命令窗口,輸入命令:

pascal(6)

矩陣次對角線上的元素1,5,10,10,5,1即為展開式的系數(shù)。第十八頁,共六十八頁,2022年,8月28日四、MATLAB運算

1.算術運算

MATLAB的基本算術運算有:+(加)、-(減)、*(乘)、/(右除)、\(左除)、^(乘方)。

注意,運算是在矩陣意義下進行的,單個數(shù)據(jù)的算術運算只是一種特例。第十九頁,共六十八頁,2022年,8月28日(1)矩陣加減運算

假定有兩個矩陣A和B,則可以由A+B和A-B實現(xiàn)矩陣的加減運算。運算規(guī)則是:若A和B矩陣的維數(shù)相同,則可以執(zhí)行矩陣的加減運算,A和B矩陣的相應元素相加減。如果A與B的維數(shù)不相同,則MATLAB將給出錯誤信息,提示用戶兩個矩陣的維數(shù)不匹配。第二十頁,共六十八頁,2022年,8月28日(2)矩陣乘法

假定有兩個矩陣A和B,若A為m×n矩陣,B為n×p矩陣,則C=A*B為m×p矩陣。第二十一頁,共六十八頁,2022年,8月28日(3)矩陣除法

在MATLAB中,有兩種矩陣除法運算:\和/,分別表示左除和右除。如果A矩陣是非奇異方陣,則A\B和B/A運算可以實現(xiàn)。A\B等效于A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效于A矩陣的逆右乘B矩陣,也就是B*inv(A)。

對于含有標量的運算,兩種除法運算的結果相同,如3/4和4\3有相同的值,都等于0.75。又如,設a=[10.5,25],則a/5=5\a=[2.10005.0000]。對于矩陣來說,左除和右除表示兩種不同的除數(shù)矩陣和被除數(shù)矩陣的關系。對于矩陣運算,一般A\B≠B/A。第二十二頁,共六十八頁,2022年,8月28日(4)矩陣的乘方

一個矩陣的乘方運算可以表示成A^x,要求A為方陣,x為標量。

第二十三頁,共六十八頁,2022年,8月28日2.點運算

在MATLAB中,有一種特殊的運算,因為其運算符是在有關算術運算符前面加點,所以叫點運算。點運算符有.*、./、.\和.^。兩矩陣進行點運算是指它們的對應元素進行相關運算,要求兩矩陣的維參數(shù)相同。第二十四頁,共六十八頁,2022年,8月28日3.關系運算

MATLAB提供了6種關系運算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。它們的含義不難理解,但要注意其書寫方法與數(shù)學中的不等式符號不盡相同。第二十五頁,共六十八頁,2022年,8月28日關系運算符的運算法則為:

(1)當兩個比較量是標量時,直接比較兩數(shù)的大小。若關系成立,關系表達式結果為1,否則為0。

(2)當參與比較的量是兩個維數(shù)相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關系運算規(guī)則逐個進行,并給出元素比較結果。最終的關系運算的結果是一個維數(shù)與原矩陣相同的矩陣,它的元素由0或1組成。第二十六頁,共六十八頁,2022年,8月28日(3)當參與比較的一個是標量,而另一個是矩陣時,則把標量與矩陣的每一個元素按標量關系運算規(guī)則逐個比較,并給出元素比較結果。最終的關系運算的結果是一個維數(shù)與原矩陣相同的矩陣,它的元素由0或1組成。第二十七頁,共六十八頁,2022年,8月28日例2-8產生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

其中,rem(A,3)是矩陣A的每個元素除以3的余數(shù)矩陣。此時,0被擴展為與A同維數(shù)的零矩陣,P是進行等于(==)比較的結果矩陣。第二十八頁,共六十八頁,2022年,8月28日4.邏輯運算

MATLAB提供了3種邏輯運算符:&(與)、|(或)和~(非)。

邏輯運算的運算法則為:

(1)在邏輯運算中,確認非零元素為真,用1表示,零元素為假,用0表示。

(2)設參與邏輯運算的是兩個標量a和b,那么,

a&ba,b全為非零時,運算結果為1,否則為0。

a|ba,b中只要有一個非零,運算結果為1。

~a當a是零時,運算結果為1;當a非零時,運算結果為0。第二十九頁,共六十八頁,2022年,8月28日(3)若參與邏輯運算的是兩個同維矩陣,那么運算將對矩陣相同位置上的元素按標量規(guī)則逐個進行。最終運算結果是一個與原矩陣同維的矩陣,其元素由1或0組成。

(4)若參與邏輯運算的一個是標量,一個是矩陣,那么運算將在標量與矩陣中的每個元素之間按標量規(guī)則逐個進行。最終運算結果是一個與矩陣同維的矩陣,其元素由1或0組成。第三十頁,共六十八頁,2022年,8月28日例2-9建立矩陣A,然后找出大于4的元素的位置。

(1)建立矩陣A。

A=[4,-65,-54,0,6;56,0,67,-45,0]

(2)找出大于4的元素的位置。

find(A>4)第三十一頁,共六十八頁,2022年,8月28日5.矩陣的轉置與旋轉

矩陣的轉置

轉置運算符是單撇號(‘)。

矩陣的旋轉

利用函數(shù)rot90(A,k)將矩陣A旋轉90o的k倍,當k為1時可省略。第三十二頁,共六十八頁,2022年,8月28日6.矩陣的翻轉矩陣的左右翻轉

對矩陣實施左右翻轉是將原矩陣的第一列和最后一列調換,第二列和倒數(shù)第二列調換,…,依次類推。MATLAB對矩陣A實施左右翻轉的函數(shù)是fliplr(A)。矩陣的上下翻轉

MATLAB對矩陣A實施上下翻轉的函數(shù)是flipud(A)。第三十三頁,共六十八頁,2022年,8月28日五、字符串

在MATLAB中,字符串是用單撇號括起來的字符序列。

MATLAB將字符串當作一個行向量,每個元素對應一個字符,其標識方法和數(shù)值向量相同。也可以建立多行字符串矩陣。第三十四頁,共六十八頁,2022年,8月28日字符串是以ASCII碼形式存儲的。abs函數(shù)可以用來獲取字符串矩陣所對應的ASCII碼數(shù)值矩陣。相反,char函數(shù)可以把ASCII碼矩陣轉換為字符串矩陣。第三十五頁,共六十八頁,2022年,8月28日例2-13建立一個字符串向量,然后對該向量做如下處理:

(1)取第1~5個字符組成的子字符串。

(2)將字符串倒過來重新排列。

(3)將字符串中的小寫字母變成相應的大寫字母,其余字符不變。

(4)統(tǒng)計字符串中小寫字母的個數(shù)。第三十六頁,共六十八頁,2022年,8月28日命令如下:

ch=‘ABc123d4e56Fg9’;

subch=ch(1:5)%取子字符串

revch=ch(end:-1:1)%將字符串倒排

k=find(ch>=‘a’&ch<=‘z’);%找小寫字母的位置

ch(k)=ch(k)-(‘a’-‘A’);%將小寫字母變成相應的大寫字母

char(ch)

length(k)%統(tǒng)計小寫字母的個數(shù)第三十七頁,共六十八頁,2022年,8月28日六、結構數(shù)據(jù)和單元數(shù)據(jù)

結構數(shù)據(jù)

結構矩陣的建立與引用

結構矩陣的元素可以是不同的數(shù)據(jù)類型,它能將一組具有不同屬性的數(shù)據(jù)納入到一個統(tǒng)一的變量名下進行管理。建立一個結構矩陣可采用給結構成員賦值的辦法。具體格式為:

結構矩陣名.成員名=表達式

其中表達式應理解為矩陣表達式。第三十八頁,共六十八頁,2022年,8月28日結構成員的修改

可以根據(jù)需要增加或刪除結構的成員。例如要給結構矩陣a增加一個成員x4,可給a中任意一個元素增加成員x4:

a(1).x4=‘410075’;

但其他成員均為空矩陣,可以使用賦值語句給它賦確定的值。

要刪除結構的成員,則可以使用rmfield函數(shù)來完成。例如,刪除成員x4:

a=rmfield(a,‘x4’);

第三十九頁,共六十八頁,2022年,8月28日2.單元數(shù)據(jù)

單元矩陣的建立與引用

建立單元矩陣和一般矩陣相似,只是矩陣元素用大括號括起來。

可以用帶有大括號下標的形式引用單元矩陣元素。例如b{3,3}。單元矩陣的元素可以是結構或單元數(shù)據(jù)。

可以使用celldisp函數(shù)來顯示整個單元矩陣,如celldisp(b)。還可以刪除單元矩陣中的某個元素。第四十頁,共六十八頁,2022年,8月28日七.M文件的編輯與調試用MATLAB的程序文件是以.m為擴展名的文本文件,稱為M文件。其語句的執(zhí)行相當于依次在命令窗口輸入相應的命令.M文件中,說明性的文字(注釋)用%開頭,用Help命令可以顯示說明文字的內容第四十一頁,共六十八頁,2022年,8月28日例Hello.m%programhello.m%Hello,Students!%Goodmorning!%Studyhardandmakeprogresseveryday!!!%Goodgoodstudy,daydayup!%第四十二頁,共六十八頁,2022年,8月28日上段程序運行結果:無任何顯示.將%Hello,Students!修改成disp(‘Hello,Students!’)重新運行,理解注釋的作用,注意編程風格:必要的注釋;分進縮寫;模塊化;做研究筆記,記下各個文件的功能及注意事項.

第四十三頁,共六十八頁,2022年,8月28日八.文件內容的輸入與修改輸入修改保存程序的調試第四十四頁,共六十八頁,2022年,8月28日九.流程控制之循環(huán)結構For循環(huán)語法:for循環(huán)變量=初值:步長:終值循環(huán)體end第四十五頁,共六十八頁,2022年,8月28日例:連加算法%multiplus1.ms=0fori=1:1000s=s+I;endsprintf(‘s=%d’,s)第四十六頁,共六十八頁,2022年,8月28日例:累乘算法%multitime1.mp=1;forn=1:1:10p=p*n;endsprintf(‘p=%d\n’,p)第四十七頁,共六十八頁,2022年,8月28日例:連加算法和累乘算法的合用:求e的值。%programee1.m%GivestheexpnumbereE=1;forn=1:100p=1;form=1:np=p*m;endE=E+1/p;endsprintf(‘p=%f\n’,p)第四十八頁,共六十八頁,2022年,8月28日例:在非線性物理中的應用舉例。

畫出logistic映射圖迭代函數(shù):第四十九頁,共六十八頁,2022年,8月28日%programebug.m蟲口模型x=0.6;u=2.6:0.001:4;forj=1:150%迭代150次可穩(wěn)定x=u.*(x-x.^2);endfori=1:100x=u.*(x-x.^2);plot(u,x,’r’,’marker’,’.’,’markersize’,1);holdonend第五十頁,共六十八頁,2022年,8月28日3.流程控制之循環(huán)結構(2)While循環(huán)語法:while條件表達式循環(huán)體語句endwhile語句的一般格式為:

while(條件)

循環(huán)體語句

end第五十一頁,共六十八頁,2022年,8月28日例:用While循環(huán)實現(xiàn)連加算法%multiplus1.ms=0fori=1:1000s=s+i;endsprintf(‘s=%d’,s)%multiplus2.ms=0;N=1;Whilen<=1000s=s+n;n=n+1;endsprintf(‘s=%d’,s)第五十二頁,共六十八頁,2022年,8月28日十.流程控制之分支結構(1)if---else---end語句語法:if邏輯表達式語句體1else語句體2end說明:當條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2。擴展:精簡:第五十三頁,共六十八頁,2022年,8月28日例:分段函數(shù)的取值x=input('請輸入x的值:');ifx<=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endy第五十四頁,共六十八頁,2022年,8月28日(2)switch---case語句switch語句根據(jù)表達式的取值不同,分別執(zhí)行不同的語句,其語句格式為:switch表達式case值1語句組1case值2語句組2……case值m語句組motherwise語句組nend第五十五頁,共六十八頁,2022年,8月28日十一.數(shù)據(jù)的輸入輸出(1)鍵盤輸入數(shù)據(jù)從鍵盤輸入數(shù)據(jù),可以用函數(shù)input實現(xiàn).格式:A=input(提示信息,選項);字符串‘s’時,輸入為字符串,無此項時為數(shù)值.第五十六頁,共六十八頁,2022年,8月28日例:

Xm=input(‘what’’syourname?’,’s’);第五十七頁,共六十八頁,2022年,8月28日(2)在命令窗口輸出數(shù)據(jù)disp函數(shù)可提供在命令窗口輸出數(shù)據(jù)的功能.格式:disp(輸出項)可以是矩陣,也可以是字符串.有多項時用方括號括起.第五十八頁,共六十八頁,2022年,8月28日例程:求一元二次方程的根a=input(‘a=?’);b=input(‘b=?’);c=input(‘c=?’);d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp([‘x1=’,num2str(x(1)),‘x1=’,num2str(x(2))])第五十九頁,共六十八頁,2022年,8月28日(3)磁盤文件的打開與關閉打開文件語法:fid=fopen(filename,permission);

文件標識符(內存變量名)磁盤文件名打開模式

溫馨提示

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

評論

0/150

提交評論