Matlab數(shù)值分析與繪圖基礎(chǔ)_第1頁
Matlab數(shù)值分析與繪圖基礎(chǔ)_第2頁
Matlab數(shù)值分析與繪圖基礎(chǔ)_第3頁
Matlab數(shù)值分析與繪圖基礎(chǔ)_第4頁
Matlab數(shù)值分析與繪圖基礎(chǔ)_第5頁
已閱讀5頁,還剩125頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

刖§

MATLAB是美國MathWorks公司自20世紀(jì)80年代中期推出的數(shù)學(xué)軟件,優(yōu)秀的數(shù)值計算能力

和卓越的數(shù)據(jù)可視化能力使其很快在數(shù)學(xué)軟件中脫穎而出。到目前為止,其最高版本7.0版已經(jīng)推

出。隨著版本的不斷升級,它在數(shù)值計算及符號計算功能上得到了進(jìn)一步完善。MATLAB已經(jīng)發(fā)展

成為多學(xué)科、多種工作平臺的功能強大的大型軟件。在歐美及國內(nèi)各高校,MATLAB已經(jīng)成為線性

代數(shù)、自動控制理論、概率論及數(shù)理統(tǒng)計、數(shù)字信號處理、時間序列分析、動態(tài)系統(tǒng)仿真等高級課

程的基本教學(xué)工具,是科研人員在研究工作中的一種極好的分析繪圖應(yīng)用軟件。

在氣象研究工作中,要對大量的氣象數(shù)據(jù)進(jìn)行各種數(shù)學(xué)分析,繪制圖形,一般大家都是采用

fortran編程的方式進(jìn)行,然后采用grads繪圖,對于我們氣象工作者來說用fortran編一個簡單的分

析程序很容易,但是像一些插值、小波分析等卻是一件很復(fù)雜的工作,而matlab內(nèi)置了大量的數(shù)學(xué)

函數(shù),幾乎涵蓋了所有的數(shù)學(xué)應(yīng)用領(lǐng)域,其所有數(shù)值計算算法都是國際公認(rèn)的、最先進(jìn)的、可靠算

法;其程序由世界一流專家編制,并經(jīng)高度優(yōu)化;而執(zhí)行算法的指令形式則簡單.、易讀易用。通過

一個簡單的命令,就可以實現(xiàn)fbrtran程序中幾百上千行的程序所實現(xiàn)的功能,使我們徹底從繁雜編

程中解脫出來,對于氣象數(shù)據(jù)繪圖,matlab更是方便,是grads等繪圖軟件無法比擬的。

目錄

第一章MATLAB簡介3

第二章矩陣及其基本運算8

第三章多項式34

第四章數(shù)值分析52

第五章優(yōu)化問題

第六章概率統(tǒng)計

第七章繪圖與圖形處理58

第八章Matlab在氣象中的應(yīng)用

附件:數(shù)據(jù)分析函數(shù)87

第一章MATLAB簡介

1.1MATLAB初步介紹

1.1.1MATLAB的傳統(tǒng)優(yōu)點

MATLAB作為美國MathWorks公司開發(fā)的用于概念設(shè)計,算法開發(fā),建模仿真,實時實現(xiàn)的理想

的集成環(huán)境。是目前最好的科學(xué)計算類軟件

作為和MathematicalMaple并列的三大數(shù)學(xué)軟件。其強項就是其強大的矩陣計算以及仿真能力。

Matlab的由來就是Matrix+Laboratory=Matlab,所以這個軟件在國內(nèi)也被稱作《矩陣實驗室》。每

次MathWorks發(fā)布Matlab的同時也會發(fā)布仿真工具Simulink。在歐美很多大公司在將產(chǎn)品投入實際

使用之前都會進(jìn)行仿真試驗,他們所主要使用的仿真軟件就是SimulinkoMatlab提供了自己的編譯

器:全面兼容C++以及Fortran兩大語言。所以Matlab是工程師,科研工作者手上最好的語言,最

好的工具和環(huán)境。Matlab已經(jīng)成為廣大科研人員的最值得信賴的助手和朋友!

目前MATLAB產(chǎn)品族可以用來進(jìn)行:

-數(shù)值分析

-數(shù)值和符號計算

-工程與科學(xué)繪圖

-控制系統(tǒng)的設(shè)計與方針

-數(shù)字圖像處理

-數(shù)字信號處理

-通訊系統(tǒng)設(shè)計與仿真

-財務(wù)與金融工程…

MATLAB是MATLAB產(chǎn)品家族的基礎(chǔ),它提供了基本的數(shù)學(xué)算法,例如矩陣運算、數(shù)值分

析算法,MATLAB集成了2D和3D圖形功能,以完成相應(yīng)數(shù)值可視化的工作,并且提供了一種

交互式的高級編程語言——M語言,利用M語言可以通過編寫腳本或者函數(shù)文件實現(xiàn)用戶自己

的算法。

MATLABCompiler是一種編譯工具,它能夠?qū)⒛切├肕ATLAB提供的編程語言——M語

言編寫的函數(shù)文件編譯生成為函數(shù)庫、可執(zhí)行文件COM組件等等。這樣就可以擴展MATLAB功

能,使MATLAB能夠同其他高級編程語言例如C/C++語言進(jìn)行混合應(yīng)用,取長補短,以提高程

序的運行效率,豐富程序開發(fā)的手段。

利用M語言還開發(fā)了相應(yīng)的MATLAB專業(yè)工具箱函數(shù)供用戶直接使用。這些工具箱應(yīng)用的

算法是開放的可擴展的,用戶不僅可以查看其中的算法,還可以針對一些算法進(jìn)行修改,甚至允許

開發(fā)自己的算法擴充工具箱的功能。目前MATLAB產(chǎn)品的工具箱有四十多個,分別涵蓋了數(shù)據(jù)獲

取、科學(xué)計算、控制系統(tǒng)設(shè)計與分析、數(shù)字信號處理、數(shù)字圖像處理、金融財務(wù)分析以及生物遺傳

工程等專業(yè)領(lǐng)域。

Simulink是基于MATLAB的框圖設(shè)計環(huán)境,可以用來對各種動態(tài)系統(tǒng)進(jìn)行建模、分析和仿真,

它的建模范圍廣泛,可以針對任何能夠用數(shù)學(xué)來描述的系統(tǒng)進(jìn)行建模,例如航空航天動力學(xué)系統(tǒng)、

衛(wèi)星控制制導(dǎo)系統(tǒng)、通訊系統(tǒng)、船舶及汽車等等,其中了包括連續(xù)、離散,條件執(zhí)行,事件驅(qū)動,

單速率、多速率和混雜系統(tǒng)等等。Simulink提供了利用鼠標(biāo)拖放的方法建立系統(tǒng)框圖模型的圖形界

面,而且Simulink還提供了豐富的功能塊以及不同的專業(yè)模塊集合,利用Simulink兒乎可以做到

不書寫一行代碼完成整個動態(tài)系統(tǒng)的建模工作。

Stateflow是一個交互式的設(shè)計工具,它基于有限狀態(tài)機的理論,可以用來對復(fù)雜的事件驅(qū)動系

統(tǒng)進(jìn)行建模和仿真。Stateflow與Simulink和MATLAB緊密集成,可以將Stateflow創(chuàng)建的復(fù)雜

控制邏輯有效地結(jié)合到Simulink的模型中。

在MATLAB產(chǎn)品族中,自動化的代碼生成工具主要有Real-TimeWorkshop(RTW)和

StateflowCoder,這兩種代碼生成工具可以直接將Simulink的模型框圖和Stateflow的狀態(tài)圖轉(zhuǎn)換

成高效優(yōu)化的程序代碼。利用RTW生成的代碼簡潔、可靠、易讀。目前RTW支持生成標(biāo)準(zhǔn)的C

語言代碼,并且具備了生成其他語言代碼的能力。整個代碼的生成、編譯以及相應(yīng)的目標(biāo)下載過程

都是自動完成的,用戶需要做得僅僅使用鼠標(biāo)點擊兒個按鈕即可。MathWorks公司針對不同的實

時或非實時操作系統(tǒng)平臺,開發(fā)了相應(yīng)的目標(biāo)選項,配合不同的軟硬件系統(tǒng),可以完成快速控制原

型開發(fā)、硬件在回路的實時仿真、產(chǎn)品代碼生成等工作。

另外,MATLAB開放性的可擴充體系允許用戶開發(fā)自定義的系統(tǒng)目標(biāo),利用Real-Time

WorkshopEmbeddedCoder能夠直接將Simulink的模型轉(zhuǎn)變成效率優(yōu)化的產(chǎn)品級代碼。代碼不僅可

以是浮點的,還可以是定點的。

MATLAB開放的產(chǎn)品體系使MATLAB成為了諸多領(lǐng)域的開發(fā)首選軟件,并且,MATLAB還

具有500余家第三方合作伙伴,分布在科學(xué)計算、機械動力、化工、計算機通訊、汽車、金融等領(lǐng)

域。接口方式包括了聯(lián)合建模、數(shù)據(jù)共享、開發(fā)流程銜接等等。

MATLAB自問世起,就以數(shù)值計算稱雄。MATLAB進(jìn)行數(shù)值計算的基本處理單位是矩陣,并

且維數(shù)不需用戶自己定義,使MATLAB程序易寫易讀。

比如已知,的采樣數(shù)據(jù)是(〃x〃。維數(shù)組,要計算y=e2sin(5f)。對一般的計算語言來說,必

須采用兩層循環(huán)才能得到結(jié)果。這不但程序復(fù)雜,而且循環(huán)十分費時。MATLAB只需一條指令y=

exp(-2*t).*sin(5*t),就可獲得y數(shù)組。

MATLAB把MAPLE的內(nèi)核和數(shù)學(xué)函數(shù)庫引入了MATLAB,具有了數(shù)值和符號雙重計算能力。

1.1.2MATLAB7的新功能

MATLAB提供了?種科學(xué)工程計算的高級語言,是進(jìn)行數(shù)據(jù)分析的集成環(huán)境,MATLAB7在

原有基礎(chǔ)上進(jìn)行了很大改進(jìn),主要有以下幾方面:

令窗體:針對各種文檔提供了簡便的管理與訪問方法;增強了數(shù)組編輯器和工作空間瀏覽器

的功能;增強了M文件編輯器,支持多格式源代碼分析。

令編程:支持創(chuàng)建嵌套函數(shù)和匿名函數(shù)功能

令數(shù)學(xué):支持整數(shù)的算術(shù)運算和但經(jīng)度數(shù)學(xué)類型運算

令圖形:新的圖形窗體界面

令接口:新增文件I/O函數(shù),使MAT文件具備支持快速數(shù)據(jù)文件I/O的能力;支持

COM,VBS,SOAP,FTP,Unicode編碼格式

1.1.3MATLAB語言基礎(chǔ)

1.數(shù)值計數(shù)

MATLAB數(shù)值采用十進(jìn)制表示法,在采用IEEE浮點算法的計算機上,數(shù)值相對精度是eps,既

保持有效數(shù)字位數(shù)16位,數(shù)值范圍是10-e308—-10e308

2.變量

變量命名規(guī)則:

令區(qū)分大小寫

令不超過31個字符

令必須以字母開頭

MATLAB中還有一些特殊變量,如:ans默認(rèn)的計算結(jié)果變量名,pi圓周率,eps計算機最小

數(shù),inf無窮大,NaN或nan不定量(缺測量)等等。

如果變量名相同,那么新的賦值將覆蓋原變量值

3.表達(dá)式與運算符

MATLAB書寫表達(dá)式的規(guī)則和?般手寫算式幾乎完全相同,按照常規(guī)優(yōu)先級順序執(zhí)行計算,矩

陣運算符有+、-、*、/(右除)、\(左除)、人以及算術(shù)運算符(矩陣中相同位置的數(shù)據(jù)進(jìn)行運算)

有.+、.-、.*、./、.\、.人,對于標(biāo)量兩種運算符是相同的。

4.復(fù)數(shù)

MATLAB對復(fù)數(shù)不需特殊處理,用i或j做虛數(shù)單位,在MATLAB中可以有一下幾種表示方法:

?a1=5+6i

a1=5.0000+6.0000i

復(fù)數(shù)矩陣的生成及運算

?A=[l,3;2,4]-[5,8;6,9]*i

?B=[l+5i,2+6i;3+8*i,4+9*i]

?C=A*B

A=

1.0000-5.0000i3.0000-8.0000i

2.0000-6.0000i4.0000-9.0000i

B=

1.0000+5.0000i2.0000+6.0000i

3.0000+8.0000i4.0000+9.0000i

C=

1.0e+002*

0.99001.1600-0.0900i

1.1600+0.0900i1.3700

用函數(shù)real()提取復(fù)數(shù)的實部,imag()提取復(fù)數(shù)的虛部、abs()計算復(fù)數(shù)的模和angle()

計算復(fù)數(shù)的相角

5.注釋與標(biāo)點

MATLAB用%做注釋符,多條命令可放在同一行,用逗號隔開,若命令結(jié)尾是逗號或直接回車,

則顯示結(jié)果,若是分號,則不顯示結(jié)果,如果一行未寫完,可用…連接

6.常用命令

1)執(zhí)行在線幫助命令

help函數(shù)名-――函數(shù)的查詢

>helpplot

PLOTLinearplot.

PLOT(X,Y)plotsvectorYversusvectorX.IfXorYisamatrix,thenthevectorisplottedversusthe

rowsorcolumnsofthematrix,whicheverlineup.IfXisascalarandYisavector,

length(Y)disconnectedpointsareplotted.

2)Doc顯示在線幫助文檔

doc函數(shù)名

例如:docplot

MATLABFunctionReferenceplot

Linear2-Dplot

Syntax

plot(Y)

plot(Xl,Yl,...)

plot(X1,Y1,LineSpec,...)

plotC?./PropertyName\PropertyValue,...)

plot(axes_handle,...)

3)type命令查看函數(shù)文件的內(nèi)容

>typeplot.m

%PLOTLinearplot.

%PLOT(X,Y)plotsvectorYversusvectorX.IfXorYisamatrix,

%thenthevectorisplottedversustherowsorcolumnsofthematrix,

%whicheverlineup.IfXisascalarandYisavector,length(Y)

%disconnectedpointsareplotted.

%PLOT(Y)plotsthecolumnsofYversustheirindex.

%IfYiscomplex,PLOT(Y)isequivalenttoPLOT(rcal(Y),imag(Y)).

%InallotherusesofPLOT,theimaginarypartisignored.

%Variouslinetypes,plotsymbolsandcolorsmaybeobtainedwith

%bbluepoint-solid

%ggreenocircle:dotted

4)函數(shù)的定位

which函數(shù)名

例如:

>whichplot.m

C:\ProgramFiles\MATLAB704\toolbox\matlab\graph2d\plot.m

5)顯示工作空間的變量whos

顯示當(dāng)前工作空間的變量名稱、類型、大小等等whosListcurrentvariables,longform..Itlistsallthe

variablesinthecurrentworkspace,togetherwithinfbnnationabouttheirsize,bytes,class,etc.

6)CLEAR清除內(nèi)存中的變量和函數(shù)

clear,clearall

clearname

clearnamelname2name3

clearglobalname

7)clc清除命令

8)elf清除圖形

1.2網(wǎng)絡(luò)資源

在網(wǎng)絡(luò)上有很多MATLAB的資源,如MATHS公司的主頁,還有眾多公司、個人建立的MATLAB論

壇。例如:

研學(xué)論壇<http://bbs.matwav.com/index.jsp>

BBS水木清華站<http:〃matlabspace,diy.myrice.com/basic/smth.matlab/index.htm>

動力論壇〈http:〃www.lasg.ac.cn/cgi-bin/forum/leoboard.cgi>

MATLAB語言與應(yīng)用<http:〃tw.netsh.com/eden/bbs/702844/>

1.3MATLAB窗口

MATLAB采用了WINDOWS界面,操作簡單易懂,這里不再介紹。

1.4MATLAB安裝、運行

不再介紹

第二章矩陣及其基本運算

MATLAB,即“矩陣實驗室”,它是以矩陣為基本運算單元。因此從最基本的運算單元出發(fā),

介紹MATLAB的命令及其用法。

2.1.矩陣的基本操作

2.1.1矩陣的生成

(1)一維、二維數(shù)組的建立

MATLAB的強大功能之一體現(xiàn)在能直接處理向量或矩陣。當(dāng)然首要任務(wù)是輸入待處理的向

量或矩陣。不管是任何矩陣(向量),我們可以直接按行方式輸入每個元素:同一行中的元素用逗號

(,)或者用空格符來分隔,且空格個數(shù)不限;不同的行用分號(;)分隔。所有元素處于一方括號

([])內(nèi);當(dāng)矩陣是多維(三維以上),且方括號內(nèi)的元素是維數(shù)較低的矩陣時,會有多重的方括號。

如:

例如:

?Timel=l:12%創(chuàng)建等差數(shù)列

Timel=

123456789101112

?Time2=13:24

Time2=

131415161718192021222324

?X=[2.323.43;4.375.98]

X=

2.433.43

4.375.98

?M=[]%生成一個空矩陣

?B=[Timel,Time2]%由原有數(shù)組創(chuàng)建新數(shù)組

B=

123456789101112131415161718192021222324

?C=[Timel;Time2]

C=

123456789101112

131415161718192021222324

二維數(shù)組元素的標(biāo)志:

■“全下標(biāo)”:即用元素所在的行列數(shù)表示出元素在矩陣的的位置,如A(3,5)表示第3行

第5列的元素

■“單下標(biāo)”:用一個下標(biāo)指明元素在矩陣中的位置,對矩陣中的所有元素按照列的順序

由左向右順序排列,然后按照自上而下進(jìn)行編號

sub2ind:根據(jù)全下標(biāo)換算出單下標(biāo)

ind2sub:根據(jù)單下標(biāo)換算出全下標(biāo)

■“邏輯1”:邏輯數(shù)組是一種特殊的數(shù)據(jù)類型,它的元素是?;?,通過與矩陣相同維

數(shù)的邏輯數(shù)組中“邏輯1”所在的位置,確定矩陣種元素的位置。

例如:找出數(shù)組A=[l2345;678910;1112131415]中所有大于5的元素

?L=A>5

L=

00000

11111

11111

?X=A(L)

X=

6

11

7

12

8

13

9

14

10

15

(2)多維數(shù)組的創(chuàng)建:高維數(shù)組,第一維稱為“行力第二維稱為“列”,第三維稱為“頁”

三維數(shù)組的創(chuàng)建:

■通過“全下標(biāo)”元素賦值方式

■由若干大小相同的低維數(shù)組組合

■由ones,zeros函數(shù)創(chuàng)建

■借助cat,repat,reshape函數(shù)

例如:通過“全下標(biāo)”元素賦值方式創(chuàng)建

?A=zeros(2,2)

A=

00

00

?A(2,2,2)=1%單元素創(chuàng)建2X2X2數(shù)組

A(:,:,l)=

00

00

A(:,:,2)=

00

01

例如:由大小相同的低維數(shù)組組合

?b=ones(2,3);

?b(:,:,2)=ones(2,3)*2;

?b(:,:,3)=ones(2,3)*3;

b(:,:,l)=b(:,:,2)=b(:,:,3)=

111222333

111222333

例如:借助cat,repat,reshape函數(shù)

函數(shù)cat

格式A=cat(n,A1,A2,…,Am)

說明n=l和n=2時分別構(gòu)造[Al;A2]和[Al,A2],都是二維數(shù)組,而n=3時可以構(gòu)造出三

維數(shù)組。

?A1=[1,2,3;4,5,6;7,8,9];A2=Al';A3=A1-A2;

?A4=cat(3,Al,A2,A3)

A4(:,:,D=A4(:,:,2)=A4(:,:,3)=

1231470-2-4

45625820-2

789369420

(3)復(fù)數(shù)矩陣

復(fù)數(shù)矩陣有兩種生成方式:

第一種方式

?a=2.7;b=13/25;

?C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+1]

C=

1.00005.4000+0.5200i0.8544

0.70715.30004.5000

第2種方式

?R=[l23;456],M=[ll1213;141516]

?C=R+i*M

C=

1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i

4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i

(4)大矩陣的生成

對于大型矩陣,一般創(chuàng)建M文件或文本文件,以便于修改:

例如:用M文件創(chuàng)建大矩陣,文件名為exm.m

[456468873257955

2168754488813

6545678898215

4566845896545987

548810963377]

在MATLAB窗口輸入:

?exm;

?size(exm)%顯示exm的大小

ans=

56%表示exm有5行6列。

(5)特殊矩陣的生成

?空陣[]—matlab允許輸入空陣,當(dāng)一項操作無結(jié)果時,返回空陣。

?rand——隨機矩陣

?eye------單位矩陣

?zeros-----全部元素都為0的矩陣

?ones——全部元素都為1的矩陣

還有伴隨矩陣、稀疏矩陣、魔方矩陣、對角矩陣、范德蒙陣等矩陣的創(chuàng)建,就不一一介紹了

2.1.2.矩陣的修改

(1)直接修改

可用一鍵找到所要修改的矩陣,用「鍵移動到要修改的矩陣元素上即可修改。

(2)指令修改

可以用A(*,*)=*來修改。

例如

?a=[l20;305;789]

a=l20

305

789

?a(3,3)=0

a=120

305

780

?a(:,3)=0

a=l20

300

780

?a(2,:)=0

a=120

000

789

(3)刪除行或列

將行或列指定為空數(shù)組,可以刪除行或列

?A=[162213;53118;94712;45141]

?X=A;

?X(:,2)=[]%刪除第二列

X=

16213

5118

9712

4141

(4)提取矩陣中的元素

例如,

獲取第1列中的所有元素

?x2=X[2,:];獲取第2行中的所有元素

?x3=X[1:7,3]獲取第三列中的1到7行的元素

2?1.3.數(shù)據(jù)的保存與獲取把matlab工作空間中有用的數(shù)據(jù)長久保存下來的方法是生成mat文件。

1.save—將工作空間中所有變量保存matlab.mat中

2.savedata—將工作空間中所有變量保存為data.mat

3.savedataab—將工作空間中變量a和b保存為data.mat

4.savedataab-append—將變量a和b添加到data.mat

5.savedataab-ascii一將變量a和b保存為data.mat的8位ascii文件

6.savedataab-ascii-double—將變量a和b保存為data.mat的16位ascii文件

用load指令調(diào)用已生成的mat文件。

1.load

2.loaddataloaddataab

4.loaddataab-ascii

mat文件是標(biāo)準(zhǔn)的二進(jìn)制文件,還可以ASCII碼形式保存。

2.2.矩陣運算

2.2.1力口、減運算

運算符:“+”和“一”分別為加、減運算符。

規(guī)則:相加、減的兩矩陣必須有相同的行和列兩矩陣對應(yīng)元素相加減。

允許參與運算的兩矩陣之一是標(biāo)量。標(biāo)量與矩陣的所有元素分別進(jìn)行加減操作。

?A=[1,1,1;1,2,3;1,3,6],B=[8,1,6;3,5,7;4,9,2]

?C=A+B,D=A-B

C=D=

927-70-5

4710-2-3-4

5128-3-64

2.2.2乘法

運算符:*

運算規(guī)則:矩陣的列數(shù)必須等于B矩陣的行數(shù);標(biāo)量可與任何矩陣相乘。

(1).兩個矩陣相乘

?X=[2345;1221];Y=[011;110;001;100];

?Z=X*Y

Z=

856

233

(2).矩陣的數(shù)乘:數(shù)乘矩陣

上例中:>>a=2*X

a=

46810

2442

(3).向量的點乘(內(nèi)積):維數(shù)相同的兩個向量對應(yīng)元素相乘。A產(chǎn)B

?a=[l23;456;780];

?b=[l35;246;369];

?c=a.*b

c=1615

82036

21480

(4)o向量點積dot

格式C=dot(A,B)%若人、B為向量,則返回向量A與B的點積,A與B長度相同;若為

矩陣,則A與B有相同的維數(shù)。

C=dot(A,B,dim)%在dim維數(shù)中給出A與B的點積

?X=[-102];Y=[-2-11];

?Z=dot(X,Y)

Z=

4

(5).向量叉乘cross

兩向量的叉乘是一個過兩相交向量的交點且垂直于兩向量所在平面的向量。

格式C=cross(A,B)%若人、B為向量,則返回A與B的叉乘,即C=A><B,A、B必須是3個

元素的向量;若A、B為矩陣,則返回一個3Xn矩陣,其中的列是A與

B對應(yīng)列的叉積,A、B都是3Xn矩陣。

C=cross(A,B,dim)%在dim維數(shù)中給出向量A與B的叉積。A和B必須具有相同的維數(shù),

size(A,dim)和size(B,dim)必須是3。

例如:計算垂直于向量(1,2,3)和(4,5,6)的向量。

?a=[l23];b=[456];c=cross(a,b)

c=-36-3

可得垂直于向量(1,2,3)和(4,5,6)的向量為±(?3,6,-3)

(6).混合積

混合積由以上兩函數(shù)實現(xiàn):

計算向量a=(l,2,3)、b=(4,5,6)和c=(-3,6,-3)的混合積a,(bxc)

?a=[l23];b=[456];c=[-36-3];

?x=dot(a,cross(b,c))

結(jié)果顯示:x=54

注意:先叉乘后點乘,順序不可顛倒。

(7).矩陣的卷積和多項式乘法

函數(shù)conv

格式w=conv(u,v)%u^v為向量,其長度可不相同。

例如展開多項式(S2+2S+2)(S+4)(S+1)

?w=conv([1,2,2],conv([l,4],[1,1]))

w=

1716188

?P=poly2str(w,,s,)%將w表示成多項式

P=

s八4+7s八3+16s八2+18s+8

(8)張量積

函數(shù)kron

格式C=kron(A,B)%人為111乂11矩陣,B為pxq矩陣,則C為mpxnq矩陣。

?A=[12;34];B=[123;456;789];

?C=kron(A,B)

C=

123246

45681012

789141618

3694812

121518162024

212427283236

2.2.3除法運算

Matlab提供了兩種除法運算:左除(\)和右除(/)?一般情況下,x=a\b是方程a*x=b的解,而x=b/a

是方程x*a=b的解。

例:

?a=[l23;426;749];b=[4;1;2];

?x=a\b

x=

-1.5000

2.0000

0.5000

如果a為非奇異矩陣,則a\b和b/a可通過a的逆矩陣與b陣得到:

a\b=inv(a)*b

b/a=b*inv(a)

點除(數(shù)組除法):維數(shù)相同的兩個向量對應(yīng)元素相除(A./BA.\B)

例如》a=[l23;456;789];b=[l35;246;369];

?c=a.\b,d=a./b

=

d=1.00000.66670.6000

1.00001.50001.66672.00001.25001.0000

0.50000.80001.00002.33331.33331.0000

0.42860.75001.0000

去卷積與多項式除法運算deconv

格式[qj]=deconv(v,u)%多項式v除以多項式u,返回商多項式q和余多項式r。

注意:v、u、q、r都是按降毒排列的多項式系數(shù)向量。

例(/+2/+3x+4)(l。/+20x+30)則去卷積為

?[q,r]=deconv(c,u)

q=r

102030000000

2.2.4矩陣幕aAp

運算規(guī)則:

(1)當(dāng)A為方陣,P為大于0的整數(shù)時,AV表示A的P次方,即A自乘P次;P為小于0的整

數(shù)時,AAP表示A」的P次方。

一用

(2)當(dāng)A為方陣,p為非整數(shù)時,則A^P=VVT其中v為A的特征向量,

_%

d11

為特征值對角矩陣。如果有重根,以上指令不成立。

dnn

(3)標(biāo)量的矩陣乘方pA,標(biāo)量的矩陣乘方定義為pA=vV-】式中V,D取自特征值分

一dnn

解AV=ADo

pa,n

(4)標(biāo)量的數(shù)組乘方PCA,標(biāo)量的數(shù)組乘方定義為P6A二,矩陣的數(shù)組乘方:ACP:

pm,…p?amn

表示A的每個元素的P次乘方。

?a=[l,2,3;4,5,6;7,8,9];

?b=aA2,c=aA0.5,d=a.A2

b=303642

668196

102126150

0.4498+0.7623i0.5526+0.2068i0.6555-0.3487i

1.0185+0.0842i1.2515+0.0228i1.4844?0.0385i

1.5873-0.5940i1.9503-0.161H2.3134+0.2717i

149

162536

496481

2.3矩陣的其他操作

2.3.1.矩陣轉(zhuǎn)置'

運算規(guī)則:若矩陣A的元素為實數(shù),則與線性代數(shù)中矩陣的轉(zhuǎn)置相同。

若A為復(fù)數(shù)矩陣,則A轉(zhuǎn)置后的元素由A對應(yīng)元素的共匏復(fù)數(shù)構(gòu)成。

若僅希望轉(zhuǎn)置,則用如下命令:A/o

2.3.2.方陣的行列式

函數(shù)det

格式d=det(X)%返回方陣X的多項式的值

?A=[123;456;789]

A=

123

456

789

?D=det(A)

D=

0

2.3.3.逆與偽逆

函數(shù)inv逆

格式Y(jié)=inv(X)%求方陣X的逆矩陣。若X為奇異陣或近似奇異陣,將給出警告信息。

'123、

求4=221的逆矩陣

1343)

方法一

?A=[123;221;343];

?Y=inv(A)或Y=AA(-1)

則結(jié)果顯示為

Y=

1.00003.0000-2.0000

-1.5000-3.00002.5000

1.00001.0000-1.0000

"23100、

方法二:由增廣矩陣8=221010進(jìn)行初等行變換

,34300

?B=[1,2,3,1,0,0;2,2,1,0,1,0;3,4,3,0,0,1];

?C=rref(B)%化行最簡形

?X=C(:,4:6)%取矩陣C中的A八(-1)部分

顯示結(jié)果如下:

C=

1.0000001.00003.0000-2.0000

01.00000-1.5000-3.00002.5000

001.00001.00001.0000-1.0000

x=

1.00003.0000-2.0000

-1.5000-3.00002.5000

1.00001.0000-1.0000

函數(shù)pinv偽逆

格式B=pinv(A)%求矩陣A的偽逆

B=pinv(A,tol)%tol為誤差:max(size(A))*norm(A)*eps

說明當(dāng)矩陣為長方陣時,方程AX=I和XA=I至少有一個無解,這時A的偽逆能在某種程度上代

表矩陣的逆,若A為非奇異矩陣,則pinv(A)=inv(A)。

?A=magic(5);%產(chǎn)生5階魔方陣。

?A=A(:,1:4)%取5階魔方陣的前4列元素構(gòu)成矩陣Ao

A=

172418

235714

461320

10121921

1118252

?X=pinv(A)%計算A的偽逆

X=

-0.00410.0527-0.0222-0.01320.0069

0.0437-0.03630.00400.00330.0038

-0.03050.0027-0.00040.00680.0355

0.0060-0.00410.03140.0211-0.0315

2.3.4.矩陣的跡trace

格式b=trace(A)%返回矩陣A的跡,即A的對角線元素之和。

2.3.5.矩陣的秩rank

格式k=rank(A)%求矩陣A的秩

k=rank(A,tol)%tol為給定誤差

2.4特殊運算

2.4.1.矩陣對角線元素的抽取diag

格式X=diag(v,k)以向量v的元素作為矩陣X的第k條對角線元素,當(dāng)k=0時,v為X的主對

角線;當(dāng)k>0時,v為上方第k條對角線;當(dāng)k<0時,v為下方第k條對角線。

X=diag(v)以v為主對角線元素,其余元素為0構(gòu)成X。

v=diag(X,k)抽取X的第k條對角線元素構(gòu)成向量v。k=0:抽取主對角線元素;k>0:抽

取上方第k條對角線元素;k<0抽取下方第k條對角線元素。

v=diag(X)抽取主對角線元素構(gòu)成向量v。

?v=[l23];

?x=diag(v,-l)

0000

1000

0200

0030

?A=[123;456;789]

A=

123

456

789

?v=diag(A,l)

v=

2

6

2.4.2.上三角陣和下三角陣的抽取

函數(shù)tril%取下三角部分

格式L=tril(X)%抽取X的主對角線的下三角部分構(gòu)成矩陣L

L=tril(X,k)%抽取X的第k條對角線的下三角部分;k=0為主對角線;k>0為主對角線以

上;k<0為主對角線以下。

函數(shù)triu%取上三角部分

格式U=triu(X)%抽取X的主對角線的上三角部分構(gòu)成矩陣U

U=triu(X,k)%抽取X的第k條對角線的上三角部分;k=0為主對角線;k>0為主對角線以上;k<0

為主對角線以下。

?A=ones(4);%產(chǎn)生4階全1陣

%取上三角部分

?L=tril(A,l)%取下三角部分>>U=triu(A,-1)

L=U=

11001111

11101111

11110111

110011

2.4.3.矩陣的變維

矩陣的變維有兩種方法,即用和函數(shù)"reshape",前者主要針對2個已知維數(shù)矩陣之間的變維

操作;而后者是對于一個矩陣的操作。

(1)變維

>A=[123456;678901]

A=

123456

678901

?B=ones(3,4)

B=

1111

1111

1111

?B(:)=A(:)

B=

1740

6396

2851

(2)reshape函數(shù)變維

格式B=reshape(A,m,n)%返回以矩陣A的元素構(gòu)成的mxn矩陣B

B=reshape(A,m,n,p,??,)%將矩陣A變維為mxnxpx...

B=reshape(A,[mnp…])%同上

B=reshape(A,siz)%山siz決定變維的大小,元素個數(shù)與A中元素個數(shù)相同。

?a=[l:12];

?b=reshape(a,2,6)

b=

1357911

24681012

2.4.4.矩陣的變向

(1)矩陣旋轉(zhuǎn)

格式B=rot90(A)%將矩陣A逆時針方向旋轉(zhuǎn)90°

B=rot90(A,k)%將矩陣A逆時針方向旋轉(zhuǎn)(kx90°),k可取正負(fù)整數(shù)。

?A=[123;456;789]

A=

123

456

789

?Yl=rot90(A),Y2=rot90(A,-l)

Y1=%逆時針方向旋轉(zhuǎn)Y2=%順時針方向旋轉(zhuǎn)

369741

258852

147963

(2)矩陣的左右翻轉(zhuǎn)

格式B=flipIr(A)%將矩陣A左右翻轉(zhuǎn)

(3)矩陣的上下翻轉(zhuǎn)

格式B=flipud(A)%將矩陣A上下翻轉(zhuǎn)

?A=[123;456]

A=

123

456

?B1=fliplr(A),B2=flipud(A)B2=

Bl=456

321123

654

(4)按指定維數(shù)翻轉(zhuǎn)矩陣

格式B=flipdim(A,dim)%flipdim(A,l)=flipud(A),并且flipdim(A,2)=fliplr(A)o

?A=[123;456]

A=

123

456

?B1=flipdim(A,1),B2=flipdim(A,2)

Bl=B2=

321

654

456

123

(5)復(fù)制和平鋪矩陣

格式B=repmat(A,m,n)%將矩陣A復(fù)制mxn塊,即B由mxn塊A平鋪而成。

B=repmat(A,[mn])%與上面一致

B=repmat(A,[mnp…])%B由mxnxpx…個A塊平鋪而成

repmat(A,m,n)%當(dāng)A是一個數(shù)a時,該命令產(chǎn)生一個全由a組成的mxn矩陣。

?A=[12;56]

A=

12

56

?B=repmat(A,3,4)

B=

12121212

56565656

12121212

56565656

12121212

56565656

2.4.5.矩陣的比較關(guān)系

矩陣的比較關(guān)系是針對于兩個矩陣對應(yīng)元素的,所以在使用關(guān)系運算時,首先應(yīng)該保證兩個矩

陣的維數(shù)一致或其中一個矩陣為標(biāo)量。關(guān)系運算是對兩個矩

溫馨提示

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

最新文檔

評論

0/150

提交評論