《MATLAB7 基礎教程》課件第2章_第1頁
《MATLAB7 基礎教程》課件第2章_第2頁
《MATLAB7 基礎教程》課件第2章_第3頁
《MATLAB7 基礎教程》課件第2章_第4頁
《MATLAB7 基礎教程》課件第2章_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2.1創(chuàng)建矩陣

2.2索引

2.3獲取矩陣信息 2.4基本操作和運算

2.5空矩陣、標量和向量2.6多維數組

2.1.1創(chuàng)建矩陣和數值序列

1.創(chuàng)建矩陣

創(chuàng)建一個矩陣最簡單的方法就是用中括號?[?]?將元素置于其中。將中括號中的元素用空格或者逗號隔開,就可以創(chuàng)建一個行矩陣;將中括號中的元素用分號隔開,就可以創(chuàng)建一個列矩陣。

【例】在命令窗創(chuàng)建矩陣。2.1創(chuàng)建矩陣在命令窗輸入:

>>A=[136195-812]

運行結果:

A=

136195-812

在命令窗輸入:

>>B=[1,2,3;4,5,6;7,8,9]運行結果:

B=

123

456

789

當矩陣的階數較大時,直接在命令窗口輸入矩陣元素較為不便。為解決此問題,可以先將矩陣按創(chuàng)建原則寫入一個M文件中,在MATLAB的命令窗口或程序中直接執(zhí)行該M文件,即將矩陣調入工作區(qū)間。

【例】在?.M文件中創(chuàng)建矩陣。

在編輯窗輸入:

C=[12345678910

11121314151617181920

21222324252627282930]

運行結果:

C=

12345678910

11121314151617181920

21222324252627282930

2.創(chuàng)建數值序列

在矩陣的合并以及索引操作中,常常要用到數值序列,因此MATLAB提供了一個創(chuàng)建數值序列的特殊運算符“:”。使用“:”運算符可創(chuàng)建一個數值序列,步進值的大小可以設置,默認步進值為1。

利用“:”運算符創(chuàng)建時(默認步進),數值序列的起始值和結束值可以是小數,也可以為負,起始值和結束值之差也可以不是整數,但是起始值必須小于結束值,否則會返回一個空矩陣。

【例】創(chuàng)建步進值為1的數值序列。

在命令窗輸入:

>>A=10:14,B=-2.2:4.3

運行結果:

A=

1011121314

B=

-2.2000-1.2000-0.20000.80001.80002.8000

3.8000

可以在起始值和結束值之間插入步進值的設置。

【例】創(chuàng)建步進值為-0.4的數值序列。

在命令窗輸入:

>>C=1.6:-0.4:-0.8

運行結果:

C=

1.60001.20000.80000.40000.0000-0.4000

-0.80002.1.2創(chuàng)建特殊矩陣

MATLAB提供了許多創(chuàng)建特殊矩陣的函數,表2-1列舉了一些常用的矩陣創(chuàng)建函數。表2-1矩陣創(chuàng)建函數這些函數的返回值通常為double類型的矩陣。也可以使用ones、zeros、eye等函數創(chuàng)建任意數據類型的矩陣。

【例】創(chuàng)建int8類型的單位矩陣。

在命令窗輸入:

>>A=eye(4,4,‘int8’)

>>A=eye([4,4],'int8')運行結果:

A=

1000

0100

0010

0001

【例】創(chuàng)建元素全為0的矩陣。

在命令窗輸入:

>>B=zeros(2,3)運行結果:

B=

000

000

【例】創(chuàng)建幻方矩陣。

在命令窗輸入:

>>C=magic(3)

運行結果:

C=

816

357

492命令diag(diag(X))可從一個已有的矩陣X中抽取對角元素,使其成為對角矩陣,也可以利用diag(V)將向量V轉化為對角矩陣。

【例】創(chuàng)建對角矩陣。

在命令窗輸入:

>>C=magic(3);

>>D=diag(diag(C))

運行結果:

D=

800

050

002如果在命令窗輸入:

>>D=diag([8,5,2])

運行結果:

D=

800

050

002

rand函數用于產生在0~1之間均勻分布的偽隨機數。

【例】

創(chuàng)建隨機矩陣。

在命令窗輸入:

>>E=rand(4,3)

運行結果:

randperm(n)命令將1~n的整數隨機排序后產生一個行向量。

【例】創(chuàng)建隨機置換向量。

在命令窗輸入:

>>F=randperm(6)

運行結果:

F=

6351242.1.3合并矩陣

1.矩陣的合并

MATLAB可以將相同行數或列數的矩陣合并,也可以將不同階數的矩陣合并為塊狀矩陣。利用中括號?[?]?或者矩陣串接函數可以將相同行數或列數的矩陣合并,利用矩陣串接函數還可以合并塊狀矩陣。

【例】合并同階矩陣。

在命令窗輸入:

>>A=magic(3),B=ones(2,3),C=zeros(3,4),D=[A;B],E=[AC]運行結果:

A=

816

357

492

B=

111

111C=

0000

0000

0000

D=

816

357

492

111

111E=

8160000

3570000

4920000

MATLAB中包含如表2-2所示的矩陣串接函數。表2-2矩陣串接函數

cat函數與用中括號?[?]?合并矩陣的方法作用基本相同,但是它還可以按照指定維串接更高維數的數組。

【例】合并同階矩陣。

在命令窗輸入:

>>A=magic(3),B=ones(3),C=cat(2,A,B),C=horzcat(A,B)

運行結果:

A=

816

357

492B=

111

111

111

C=

816111

357111

492111

C=

816111

357111

492111

【例】復制并平鋪矩陣。

在命令窗輸入:

>>A=magic(3),D=repmat(A,1,3)運行結果:

A=

816

357

492

D=

816816816

357357357

492492492

blkdiag函數從對角方向合并矩陣,形成的分塊對角化矩陣除對角之外的元素均為0。

【例】創(chuàng)建分塊對角化矩陣。

在命令窗輸入:

>>A=magic(3),B=[123;456],E=blkdiag(A,B)

運行結果:

A=

816

357

492

B=

123

456E=

816000

357000

492000

000123

000456

2.不同數據類型矩陣的合并

MATLAB中的矩陣可以由不同數據類型的元素來合并,其結果為某個特定類型的矩陣,MATLAB自動將所有元素轉化為其中的一種數據類型。表2-3給出了5種數據類型之間的轉化結果。表2-3各數據類型之間轉化結果例如,用double類型和single類型合成矩陣,最終得到的會是single類型的矩陣,MATLAB自動將double類型的元素轉化為single類型。如果合成矩陣中含有空矩陣,空矩陣將會被忽略。

【例】合并double類型和single類型。

在命令窗輸入:

>>x=[single(-2.8)pi5.13*10^100],class(x)運行結果:

x=

-2.80003.1416Inf

ans=

single

【例】合并double類型和integer類型。

在命令窗輸入:

>>y=[int8(-22)int8(13)pi45/16],class(y)運行結果:

y=

-221333

ans=

int8

【例】

合并character類型和double類型。

在命令窗輸入:

>>z=[‘A’

‘B’

‘C’6869],class(z)

運行結果:

z=

ABCDE

ans=

char

【例】

合并character類型和double類型。

在命令窗輸入:

>>u=[truefalsepi],class(u)

運行結果:

u=

1.000003.1416

ans=

double2.2.1線性索引

MATLAB中可以只用一個下標訪問二維矩陣中的元素。MATLAB對數據的存儲形式不同于數據在命令窗中顯示的形式,而是以列元素為序的方式存儲。例如,矩陣A=[267;

428;309]實際上是以如下形式存儲的:

2,4,3,6,2,0,7,8,9

如果要訪問某個n×m階矩陣的row行col列元素,則不但可以使用A(row,col)命令來訪問,還可以使用A((col?-1)*n+row)來訪問。2.2索引

【例】訪問3階幻方矩陣A中2行3列的元素。

在命令窗輸入:

>>A=magic(3),A(8)

運行結果:

A=

816

357

492

ans=

72.2.2訪問單個元素

要訪問某個矩陣的指定元素,需要用命令A(row,column)指定行號和列號,其中,A為矩陣變量,行號(row)在前,列號(column)在后。

【例】訪問3階幻方矩陣A中2行3列的元素。

在命令窗輸入:

>>A=magic(3),A(2,3)運行結果:

A=

816

357

492

ans=

72.2.3訪問多個元素

MATLAB可以一次性訪問一個矩陣中的多個元素。對于如下4×4的幻方矩陣A,可以一次性計算它的列元素和,也可以用“:”運算符來減小它的尺寸。

【例】訪問4階幻方矩陣A的多個元素。

在命令窗輸入:

>>A=magic(4),sum(A)運行結果:

A=

162313

511108

97612

414151

ans=

34343434繼續(xù)在命令窗輸入:

>>B=A(2:3,:)

或輸入:

>>B=A(2:3,1:4)

運行結果:

B=

511108

97612

其中,“2:3”代表從第2行到第3行,“1:4”代表從第1列到第4列,“:”代表所有列。

利用數值序列也可以訪問或者修改矩陣中的多個元素。

【例】

修改4階幻方矩陣A的多個元素。

在命令窗輸入:

>>C=A;C(1:3:end)=0

運行結果:

C=

0230

51108

90612

014150可以看出,以3為步進,從1到16的所有元素的值均被修改為0?!癳nd”關鍵字在此處代表矩陣元素的最后一個索引,即16。在程序不知道矩陣具體階數的情況下,使用關鍵字“end”會為編程帶來很大方便。

一個矩陣也可以作為其他矩陣元素的索引。例如,可以用4階幻方矩陣的第9個元素組成的矩陣作為索引。

【例】

用4階幻方矩陣A的元素組成的矩陣作為索引。

在命令窗輸入:

>>B=A(9*ones(2,5))運行結果:

B=

33333

333332.3.1矩陣的階數與維數

表2-4給出有關獲取矩陣維數、階數的函數。

【例】

刪除矩陣的行(降低矩陣階數)。

在命令窗輸入:

>>A=magic(4),A(1:2,:)=[]2.3獲取矩陣信息表2-4有關矩陣階數與維數的函數運行結果:

A=

162313

511108

97612

414151

A=

97612

414151

【例】獲取向量長度。

在命令窗輸入:

>>x=1:10,length(x)

運行結果:

x=

12345678910

ans=

10

【例】獲取矩陣維數、階數與元素數。

在命令窗輸入:

>>A=magic(3),ndims(A)

運行結果:

A=

816

357

492

ans=

2繼續(xù)在命令窗輸入:

>>size(A)

運行結果:

ans=

33

或輸入:

>>size(A,2)

運行結果:

ans=

3再在命令窗輸入:

>>numel(A)

運行結果:

ans=

9

對于size函數,size(A,1)得到A的行階數,size(A,2)得到A的列階數,size(A,n)得到A的第n維的階數。2.3.2矩陣元素的數據類型

表2-5給出了有關判斷矩陣元素數據類型的函數。表2-5判斷矩陣元素數據類型的函數

【例】使用isnumeric和isreal數據類型判斷函數。

在命令窗輸入:

>>A=[5+i8/34.2339jpi15-2i];

form=1:numel(A)

ifisnumeric(A(m))&&isreal(A(m))

disp(A(m))

end

end運行結果:

2.6667

4.2330

3.14162.3.3矩陣的數據結構

表2-6給出了有關判斷矩陣元素數據結構的函數。表2-6判斷矩陣元素數據結構的函數2.4.1矩陣的擴大和縮小

1.矩陣的擴大

如果在矩陣尺寸外存儲一個元素,那么這個矩陣將擴大到指定的尺寸并能容納新添加的元素。

【例】

用元素擴展矩陣。2.4基本操作和運算在命令窗輸入:

>>A=magic(3),A(4,5)=100

運行結果:

A=

816

357

492

A=

81600

35700

49200

0000100也可以利用數值序列對矩陣進行擴展。

【例】用數值序列擴展矩陣。

在命令窗輸入:

>>A=magic(3),A(3:4,3:5)=100

運行結果:

A=

816

357

492A=

81600

35700

49100100100

001001001002.矩陣的縮小

通過對矩陣的行或列賦空值,可以實現對矩陣的行或列的刪除。

【例】刪除矩陣的行。

在命令窗輸入:

>>A=magic(3),A(3,:)=[]運行結果:

A=

816

357

492

A=

816

357

但是,不能直接刪除矩陣的某個元素。如果需要刪除某個元素,可以通過線性索引的方法來刪除。

【例】刪除矩陣的元素。

在命令窗輸入:

>>A=magic(3),A(3)=[]

運行結果:

A=

816

357

492

A=

831596722.4.2改變矩陣的形狀

表2-7給出了有關改變矩陣形狀的函數。表2-7改變矩陣形狀的函數

【例】改變矩陣的形狀。

在命令窗輸入:

>>A=[14710;25811;36912],B=reshape(A,2,6)

運行結果:

A=

14710

25811

36912

B=

1357911

24681012

利用transpose函數或者轉置運算符“.'”可以對矩陣進行轉置。

【例】矩陣的轉置。

繼續(xù)在命令窗輸入:

>>C=A.‘

運行結果:

C=

123

456

789

101112

【例】

矩陣的復共軛轉置。

在命令窗輸入:

>>A=[1+9i2-6i3+7i;14-6i5+2i2-4i],B=A‘

運行結果:

A=

1.0000+9.0000i2.0000-6.0000i3.0000+7.0000i

14.0000-6.0000i5.0000+2.0000i2.0000-4.0000i

B=

1.0000-9.0000i14.0000+6.0000i

2.0000+6.0000i5.0000-2.0000i

3.0000-7.0000i2.0000+4.0000i

【例】將矩陣旋轉90°。

在命令窗輸入:

>>A=[14710;25811;36912],B=rot90(A)

運行結果:

A=

14710

25811

36912B=

101112

789

456

123

【例】水平翻轉矩陣。

繼續(xù)在命令窗輸入:

>>C=fliplr(A)運行結果:

C=

10741

11852

129632.4.3矩陣的算術運算

表2-8給出了MATLAB提供的算術運算符。表2-8算?術?運?算?符2.4.4矩陣的關系運算和邏輯運算

1.關系運算

表2-9給出了MATLAB的矩陣關系運算符。表2-9關?系?運?算?符

【例】

矩陣的關系運算。

在命令窗輸入:

>>A=[276;905;30.56];

>>B=[870;325;4-17];

>>A==B

運行結果:

ans=

010

001

000

2.邏輯運算

MATLAB的邏輯運算符有三種:元素方式邏輯運算符、比特方式邏輯運算符和短路邏輯運算符。

元素方式邏輯運算的操作數為兩個長度相同的邏輯向量,如果向量元素為有限非零數值類型,MATLAB自動將其轉化為邏輯“1”。表2-10給出了MATLAB的元素方式的邏輯運算符。實例中,A=[01101];B=[11001]。表2-10元素方式的邏輯運算符比特方式邏輯運算的操作數必須是非負整數類型的標量或數組。表2-11給出了比特方式的邏輯運算函數。實例中:

A=28;%binary11100

B=21;%binary10101

短路邏輯運算符的操作數是蘊含標量值的邏輯表達式。表2-12給出了短路邏輯運算符。表2-11比特方式的邏輯運算函數表2-12短路邏輯運算符短路邏輯運算常用于if或者while語句的條件判斷中。另外,短路邏輯運算還可以避免除數為零的錯誤:

【例】

表達式邏輯與。

在命令窗輸入:

>>a=1;b=0;

>>x=(b~=0)&&(a/b>18.5)

運行結果:

x=

02.5.1空矩陣

一個矩陣至少應該有一維,而MATLAB中可以存在0×0的空矩陣,更為復雜的空矩陣有如5×0維和0×3維的矩陣。事實上,空矩陣常常用于循環(huán)語句中,作為第一次矩陣合并或串接的矩陣,這會給編程帶來很多方便。2.5空矩陣、標量和向量

【例】空矩陣。

在命令窗輸入:

>>A=[],B=ones(5,0)

運行結果:

A=

[]

B=

Emptymatrix:5-by-02.5.2標量

單一的實數或者復數代表MATLAB中1×1的矩陣,也稱做“標量”。

【例】

標量。

在命令窗輸入:

>>A=4;B=ndims(A),isscalar(A)

運行結果:

B=

2

ans=

1

運行結果表明,A的維數為2(1×1矩陣),但是A為標量。2.5.3向量

矩陣的某個維階數如果等于1,那么它就是向量。一個向量可以由其他向量組合而成,但是對應維的階數必須為1。例如,構成列向量的元素必須是標量或者列向量,用空矩陣合成向量將會被忽略。

【例】向量。

在命令窗輸入:

>>A=[pi32-3],B=[],C=[24],D=[ABC]運行結果:

A=

3.141632.0000-3.0000

B=

[]

C=

24

D=

3.141632.0000-3.00002.00004.0000多維數組是二維常規(guī)矩陣的擴展,可以利用下標來訪問一個二維矩陣,第一個下標代表行索引,第二個代表列索引。如果是多維矩陣,則需要增加下標來索引。例如圖2-1中,訪問第2行第3列第2頁的元素,需要用到下標(2,3,2)。

當一個數組維數增加時,它的下標也相應的增加。例如一個4維數組有4個下標,前兩個下標代表行和列,后兩個下標則分別代表數組的第3維和第4維。2.6多維數組圖2-1多維數組示意圖2.6.1多維數組的創(chuàng)建

多維數組的創(chuàng)建方法與矩陣的創(chuàng)建類似。另外,MATLAB還提供了專門的串接函數用于創(chuàng)建多維數組。

最簡單的創(chuàng)建方法就是將矩陣擴展為多維數組。

【例】

創(chuàng)建多維數組。

在命令窗輸入:

>>A=[578;019;436];A(:,:,2)=[104;356;987]運行結果:

A(:,:,1)=

578

019

436

A(:,:,2)=

104

356

987

與矩陣的擴展類似,多維數組也可以直接進行擴展?!纠繑U展多維數組。

繼續(xù)在命令窗輸入:

>>A(:,:,3)=0

運行結果:

A(:,:,1)=

578

019

436A(:,:,2)=

104

356

987

A(:,:,3)=

000

000

000

多維數組的創(chuàng)建同樣可以使用randn、ones、zeros等函數?!纠坷煤瘮祫?chuàng)建多維數組。

在命令窗輸入:

>>B=randn(4,3,2)

運行結果:

B(:,:,1)=

-0.6918-1.4410 0.8156

0.85800.5711 0.7119

1.2540-0.3999 1.2902

-1.59370.6900 0.6686B(:,:,2)=

1.1908-1.6041?-0.8051

-1.20250.25730.5287

-0.0198-1.0565?0.2193

-0.15671.4151?-0.9219

利用串接函數也可以實現多維數組的創(chuàng)建。【例】利用串接函數創(chuàng)建多維數組。

在命令窗輸入:

>>C=cat(3,[28;15],[13;49])

運行結果:

C(:,:,1)=

28

15

C(:,:,2)=

13

492.6.2多維數組的索引

很多運用于矩陣的方法都可以推廣到多維數組中。運用下標可以訪問多維數組的一個元素,同樣可以使用向量作為數組的下標。

【例】多維數組的下標。

在命令窗輸入:

>>A=10*rand(4,3,2),b=A(1,1,2),c=A([3,4],1,2)運行結果:

A(:,:,1)=

7.09366.55109.5974

7.54691.62613.4039

2.76031.19005.8527

6.79704.98362.2381

A(:,:,2)=

7.51278.90901.4929

2.55109.59292.5751

溫馨提示

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

評論

0/150

提交評論