




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第二講MATLAB的基本運(yùn)算——matlab具有出色的數(shù)值計(jì)算能力,占據(jù)世界上數(shù)值計(jì)算軟件的主導(dǎo)地位1數(shù)據(jù)類型MATLAB7.3定義了15種基本的數(shù)據(jù)類型,包括整型、浮點(diǎn)型、字符型和邏輯型等,用戶甚至可以定義自己的數(shù)據(jù)類型。2矩陣和數(shù)組MATLAB提供了不同類型的數(shù)據(jù)MATLAB專門以矩陣作為基本的運(yùn)算單位MATLAB提供了關(guān)于數(shù)組和矩陣不同的運(yùn)算方法MATLAB提供了一種計(jì)算機(jī)高級(jí)編程語言——M語言3在M語言中最常用的數(shù)據(jù)類型表現(xiàn)手段和形式就是變量和常量M語言的基本處理單位是數(shù)值矩陣或者數(shù)值向量有關(guān)概念變量和常量數(shù)組向量矩陣4常數(shù)和變量1.常數(shù)2.變量MATLAB的變量命名規(guī)則如下:變量名區(qū)分字母的大小寫。例如,“a”和“A”是不同的變量。變量名不能超過63個(gè)字符,第63個(gè)字符后的字符被忽略。變量名必須以字母開頭,變量名的組成可以是任意字母、數(shù)字或者下劃線,但不能含有空格和標(biāo)點(diǎn)符號(hào)(如,。%等)。關(guān)鍵字(如if、while等)不能作為變量名。5變量和常量變量:程序運(yùn)行過程中需要改變數(shù)值的量每一個(gè)變量都具有一個(gè)名字變量在內(nèi)存中占據(jù)一定的空間變量必須以字母開頭,后面可以是字母、數(shù)字或者下劃線的組合MATLAB僅識(shí)別前面N個(gè)字符,在不同的操作系統(tǒng)下可以識(shí)別的字符個(gè)數(shù)不同常量:在程序運(yùn)行的過程中不需要改變數(shù)值的量常量具有名字在M語言中不存在常量的定義,只在MATLAB中提供一些常用的常數(shù)作為常量6MATLAB的常量常量說明ans最近運(yùn)算的結(jié)果eps浮點(diǎn)數(shù)相對精度,定義為1.0到最近浮點(diǎn)數(shù)的距離realmaxMATLAB能表示的實(shí)數(shù)的最大絕對值realminMATLAB能表示的實(shí)數(shù)的最小絕對值pi圓周率的近似值3.1415926i,j復(fù)數(shù)的虛部數(shù)據(jù)最小單位inf或Inf表示正無大,定義為1/0NaN或nan非數(shù),它產(chǎn)生于0×
,0/0,/等運(yùn)算7數(shù)組是有序數(shù)據(jù)的集合數(shù)組的每一個(gè)成員(元素)都屬于同一種數(shù)據(jù)類型,它們使用同一個(gè)數(shù)組名稱和不同的下標(biāo)來唯一確定數(shù)組中的成員(元素)。在MATLAB中元胞數(shù)組比較特殊,數(shù)組中的元素可以是不同的數(shù)據(jù)類型。8向量從編程語言的角度上看,向量其實(shí)就是一維數(shù)組從數(shù)學(xué)的角度上看,向量就是1×N或者N×1的矩陣,即行向量或列向量
b1,1b2,1B=b3,1和B=[b1,1b1,2b1,3······b1,n]∶∶
bn,19矩陣是用一對圓括號(hào)或方括號(hào)括起來,符合一定規(guī)則的數(shù)學(xué)對象
b11b12b13B=b21b22b23b31b32b33對于編程語言,矩陣就是二維的數(shù)組10創(chuàng)建向量1.在命令窗口逐個(gè)輸入元素例1:>>X=[13pi3+5i]2.利用冒號(hào)運(yùn)算符創(chuàng)建向量 X=J:INC:KJ為向量的第一個(gè)元素,K為向量的最后一個(gè)元素,INC為向量元素遞增的步長J、INC、K之間必須用“:”間隔若忽略INC,則默認(rèn)的遞增步長為1INC可以為正數(shù),也可以為負(fù)數(shù)例2:>>X=1:10例3:>>X=1:0.01:1.1
11創(chuàng)建向量(續(xù))3.定數(shù)線性采樣法:在設(shè)定的“總點(diǎn)數(shù)”下,均勻采樣生成向量(一維“行”數(shù)組)使用函數(shù)linspace和logspacelinspace是用來創(chuàng)建線性間隔向量的函數(shù)linspace
的基本語法
X=linespace(X1,X2,n)X1為向量的第一個(gè)元素,X2為向量的最后一個(gè)元素,n為向量具有的元素個(gè)數(shù),函數(shù)將根據(jù)n的數(shù)值平均計(jì)算元素之間的間隔,間隔計(jì)算公式為若在表達(dá)式中忽略參數(shù)n,則系統(tǒng)默認(rèn)地將向量設(shè)置為100個(gè)元素12創(chuàng)建向量(續(xù))例4使用linspace函數(shù)創(chuàng)建向量>>X=linspace(1,2,5)X=1.00001.25001.50001.75002.000013創(chuàng)建向量(續(xù))logspace是用來創(chuàng)建對數(shù)空間的向量logspace
的基本語法
X=logspace(X1,X2,n)該函數(shù)創(chuàng)建的向量第一個(gè)元素值為10X1,而最后一個(gè)元素的數(shù)值為10X2,n為向量的元素個(gè)數(shù),元素彼此之間的間隔按照對數(shù)空間的間隔設(shè)置若在表達(dá)式中忽略參數(shù)n,則系統(tǒng)默認(rèn)地將向量設(shè)置為50個(gè)元素14創(chuàng)建向量(續(xù))例5使用logspace函數(shù)創(chuàng)建向量>>X=logspace(1,3,3)X=10100100015創(chuàng)建向量(續(xù))創(chuàng)建列向量使用分號(hào)作為元素與元素之間的間隔使用轉(zhuǎn)置運(yùn)算符“'”例6:>>A=[1;2;3;4;5;6]或>>A=(1:6)'16創(chuàng)建矩陣矩陣的元素可以為任意MATLAB數(shù)據(jù)類型的數(shù)值或?qū)ο髣?chuàng)建矩陣的方法直接輸入法使用數(shù)組編輯器
17直接輸入法規(guī)則:整個(gè)矩陣的元素必須用[]括住同一行的矩陣元素之間必須用逗號(hào)或空格分隔在[]內(nèi)矩陣的行與行之間必須用分號(hào)分隔,也可以在需要分行的地方用回車鍵間隔矩陣元素可以是任何MATLAB表達(dá)式,可以是實(shí)數(shù),也可以是復(fù)數(shù),復(fù)數(shù)用i,j輸入
例2-7:
>>A=[1,2,3;4,5,6;7,8,9]>>X=[2pi/2;
sqrt(3)3+5i]
18逗號(hào)和分號(hào)的作用逗號(hào)和分號(hào)可作為指令間的分隔符,MATLAB允許多條語句在同一行出現(xiàn)。分號(hào)如果出現(xiàn)在指令后,屏幕上將不顯示結(jié)果。只要是賦過值的變量,不管是否在屏幕上顯示過,都會(huì)存儲(chǔ)在工作空間中,以后可隨時(shí)顯示或調(diào)用。變量名盡可能不要重復(fù),否則會(huì)覆蓋。直接輸入法(續(xù))19例8:>>A=[1,2,3;4,5,6;7,8,9],X=[2pi/2;sqrt(3)3+5i]A=123456789X=2.00001.57081.73213.0000+5.0000i>>A=[1,2,3;4,5,6;7,8,9];X=[2pi/2;sqrt(3)3+5i]X=2.00001.57081.73213.0000+5.0000i直接輸入法(續(xù))20冒號(hào)的作用用于生成等間隔的向量,默認(rèn)間隔為1。例9:>>y=[1:3;4:6;7:9]直接輸入法(續(xù))21數(shù)組編輯器調(diào)用數(shù)組編輯器的方法選擇工作空間瀏覽器中的變量,然后單擊工作欄中的按鈕在工作空間瀏覽器中直接雙擊變量選擇工作空間瀏覽器中的變量,然后單擊快捷菜單命令Open在MATLAB命令行窗口中鍵入指令“openvar
變量名”數(shù)組編輯器僅能編輯、修改向量或矩陣,對于多維數(shù)組,數(shù)組編輯器只能察看數(shù)組的內(nèi)容,不能修改多維數(shù)組的元素22數(shù)組編輯器(續(xù))利用數(shù)組編輯器完成矩陣的編輯步驟在命令行窗口中創(chuàng)建一個(gè)新的變量,為其賦任意數(shù)值如:A=1打開數(shù)組編輯器,在數(shù)組編輯器中加載相應(yīng)的變量在數(shù)組編輯器的工具欄中,修改矩陣的行數(shù)和列數(shù),雙擊任意元素修改矩陣的元素值23矩陣的修改直接修改在命令行窗口中,可用↑鍵找到所要修改的矩陣,用←鍵移動(dòng)到要修改的矩陣元素上即可修改。在數(shù)組編輯器中,可用↑、↓、←、→鍵找到所要修改的矩陣元素進(jìn)行修改。指令修改:用A(,)=來修改。例10:>>A=[120;305;789]A=120305789>>A(3,3)=0A=120 305 78024矩陣元素的訪問訪問矩陣的元素需要使用矩陣元素的索引使用矩陣元素的行列全下標(biāo)形式A(*,*)使用全下標(biāo)形式訪問矩陣元素的方法簡單、直接,同線性代數(shù)的矩陣元素的概念一一對應(yīng)使用矩陣元素的單下標(biāo)形式A(*)矩陣元素的單下標(biāo)是矩陣元素在內(nèi)存中存儲(chǔ)的序列號(hào),一般地,同一個(gè)矩陣的元素在連續(xù)的內(nèi)存單元中(元素的排列以列元素優(yōu)先)25矩陣元素的訪問(續(xù))4
110
5196
132
178
22
69
104
147
187
35
77
111
155
190
43
84
125
168
20A(1:4,5)A(:,5)A(:,end)A(17:20)'A(2:4,2:3)A([234],[23])A(1,2)A(5)例13A=26矩陣元素的訪問(續(xù))使用索引訪問矩陣元素的方法矩陣元素的訪問說明A(i,j)訪問矩陣A的第i行第j列上的元素,其中i和j為標(biāo)量A(I,J)訪問由向量I和J指定的矩陣A中的元素A(i,:)訪問矩陣A中第i行的所有元素A(:,j)訪問矩陣A中第j列的所有元素A(:)訪問矩陣A中的所有元素,將矩陣看成一個(gè)向量A(l)使用單下標(biāo)的方式訪問矩陣元素,其中l(wèi)為標(biāo)量A(L)訪問由向量L指定的矩陣A的元素,向量L中的元素為矩陣元素的單下標(biāo)數(shù)值在索引矩陣或數(shù)組的元素時(shí),若直接用冒號(hào)運(yùn)算符且不給任何的參數(shù),則表示選擇該行或列,或維中的所有元素27矩陣元素的訪問(續(xù))例:用不同的方法訪問矩陣的元素>>A=1:25>>A=reshape(A,5,5)A=16111621271217223813182349141924510152025>>A(3,1)或A(3)ans=3>>A(3,:)ans=3813182316111621271217223813182349141924510152025>>A(end,:)ans=510152025>>I=[135];J=[24];>>A(I,J)>>A([135],[24])ans=6168181020>>A(:,4)ans=161718192028矩陣的基本運(yùn)算函數(shù)基本數(shù)學(xué)運(yùn)算規(guī)則數(shù)組的運(yùn)算運(yùn)算函數(shù)運(yùn)算指令29矩陣生成函數(shù)函數(shù)說明zeros產(chǎn)生元素全為0的矩陣ones產(chǎn)生元素全為1的矩陣eye產(chǎn)生單位矩陣rand產(chǎn)生均勻分布的隨機(jī)數(shù)矩陣,數(shù)值范圍(0,1)randn產(chǎn)生均值為0,方差為1的正態(tài)分布隨機(jī)數(shù)矩陣diag獲取矩陣的對角線元素,也可生成對角矩陣tril產(chǎn)生下三角矩陣triu產(chǎn)生上三角矩陣pascal產(chǎn)生帕斯卡矩陣magic產(chǎn)生幻方陣30例14矩陣生成函數(shù)示例>>A=zeros(3)A=000000000>>A=ones(3)A=111111111矩陣生成函數(shù)(續(xù))>>A=eye(3)A=100010001>>A=rand(3)A=0.95010.48600.45650.23110.89130.01850.60680.76210.8214>>A=randn(3)A=-0.43260.28771.1892-1.6656-1.1465-0.03760.12531.19090.327331例14矩陣生成函數(shù)示例>>A=magic(3)A=816357(15)492>>A=magic(4)A=162313511108(34)97612414151矩陣生成函數(shù)(續(xù))32基本矩陣運(yùn)算運(yùn)算命令說明A’矩陣轉(zhuǎn)置A^n矩陣求冪,n可以為任意實(shí)數(shù)A*B矩陣相乘A/B矩陣右除(一般的除法,A/B=A÷B)A\B矩陣左除(一種倒置的除法,A\B=B÷A)A+B矩陣相加A-B矩陣相減inv矩陣求逆,注意不是所有的矩陣都有逆矩陣det求方陣的行列式rank求矩陣的秩eig求矩陣的特征向量和特征值svd對矩陣進(jìn)行奇異值分解norm求矩陣的范數(shù)331.矩陣加、減運(yùn)算(A+B、A-B)規(guī)則:相加、減的兩矩陣必須有相同的行和列,兩矩陣對應(yīng)元素相加減。MATLAB允許參與運(yùn)算的兩矩陣之一是標(biāo)量,標(biāo)量與矩陣的所有元素分別進(jìn)行加減操作。例:A=[123;456]B=[345;789]C=3A+B=[468;111315]A+C=[456;789]B+C=[678;101112]基本矩陣運(yùn)算(續(xù))342.矩陣乘運(yùn)算A*B:A矩陣的列數(shù)必須等于B矩陣的行數(shù)。s*A或A*s:標(biāo)量可與任何矩陣相乘,標(biāo)量s分別與矩陣A每個(gè)元素相乘。例:>>A=[123;456;780];B=[1;2;3];>>C=A*BC=143223>>D=[-1;0;2];>>F=pi*DF=-3.141606.2832
基本矩陣運(yùn)算(續(xù))35
3.矩陣除運(yùn)算及線性方程組的解在線性代數(shù)中沒有矩陣的除運(yùn)算,只有矩陣逆的運(yùn)算,在MATLAB中有兩種矩陣除運(yùn)算。 A/B—矩陣右除,相當(dāng)于A
inv(B) A\B—矩陣左除,相當(dāng)于inv(A)
B因此,x=A\B是線性方程組Ax=B的解。例:求解方程組3x1+x2-x3=3.6x1+2x2+4x3=2.1-x1+4x2+5x3=-1.4>>A=[31-1;124;-145];>>B=[3.6;2.1;-1.4];
>>x=A\Bx= 1.4818 -0.4606 0.3848基本矩陣運(yùn)算(續(xù))364.矩陣乘方
A^n——A自乘n次冪
例>>a=[1,2,3;4,5,6;7,8,9];>>a^2ans=303642668196102126150
方陣>1的整數(shù)基本矩陣運(yùn)算(續(xù))37數(shù)組運(yùn)算指元素對元素的算術(shù)運(yùn)算,與通常意義上的由符號(hào)表示的線性代數(shù)矩陣運(yùn)算不同。1. 數(shù)組加減(+,-)運(yùn)算規(guī)則:相加、減的兩數(shù)組必須有相同的行和列,兩數(shù)組對應(yīng)元素相加減。MATLAB允許參與運(yùn)算的兩數(shù)組之一是標(biāo)量,標(biāo)量與數(shù)組的所有元素分別進(jìn)行加減操作
A+B A-B基本數(shù)組(元素群)運(yùn)算
與矩陣加減運(yùn)算等效,數(shù)組之一也可為標(biāo)量。382.數(shù)組乘(
)
運(yùn)算AB
A,B兩數(shù)組必須有相同的行和列,兩數(shù)組相應(yīng)元素相乘。
sA或As
標(biāo)量與數(shù)組相乘,標(biāo)量s分別與數(shù)組A每個(gè)元素相乘,與s
A或A
s相同。例16:>>A=[123;456;789];>>B=[246;135;7910];>>A.*B
ans= 2818 41530 497290基本數(shù)組(元素群)運(yùn)算(續(xù))>>A=[123;456;789];>>B=[246;135;7910];>>A*Bans= 253746 5585109 85133172393.數(shù)組除(/,\)運(yùn)算C=A./B——數(shù)組右除 C(i,j)=A(i,j)/B(i,j)C=A.\B——數(shù)組左除 C(i,j)=B(i,j)/A(i,j)A./B=B.\AA./s=s.\A—A的元素分別被標(biāo)量s除s./A=A.\s—標(biāo)量s分別被A的元素除例:>>A=[123];>>B=[456];>>C1=A./BC1=0.25000.40000.5000>>C2=B.\AC2=0.25000.40000.5000>>C3=A.\BC3=4.00002.50002.0000基本數(shù)組(元素群)運(yùn)算(續(xù))>>A=[123];B=[456];>>A/Bans=0.4156>>A\Bans=0000001.33331.66672.0000404.數(shù)組乘方(.^)A.^n——A的每個(gè)元素自乘n次A.^p——對A各元素分別求非整數(shù)冪p.^A——以p為底,分別以A的元素為指數(shù)求冪值C=A.^B——元素對元素的冪C(i,j)=A(i,j).^B(i,j)例:>>A=[123];B=[456];>>X=A.^2X=1.004.009.00>>Y=A.^0.5Y=1.00001.41421.7321
基本數(shù)組(元素群)運(yùn)算(續(xù))>>C=3.^BY=81.00243.00729.00
3^43^53^6>>Z=A.^BZ=1.0032.00729.001^42^53^6415.數(shù)組轉(zhuǎn)置(.’)例:>>A=[135;246]A=135246>>A'ans=123456>>A.'ans=123456基本數(shù)組(元素群)運(yùn)算(續(xù))結(jié)論:對于實(shí)數(shù)矩陣,矩陣轉(zhuǎn)置和數(shù)組轉(zhuǎn)置的計(jì)算結(jié)果是一致的。42例:>>A=A*iA=0+1.0000i0+3.0000i0+5.0000i0+2.0000i0+4.0000i0+6.0000i>>A'ans=0-1.0000i0-2.0000i0-3.0000i0-4.0000i0-5.0000i0-6.0000i>>A.'ans=0+1.0000i0+2.0000i0+3.0000i0+4.0000i0+5.0000i0+6.0000i基本數(shù)組(元素群)運(yùn)算(續(xù))結(jié)論:對于復(fù)數(shù)矩陣,矩陣轉(zhuǎn)置和數(shù)組轉(zhuǎn)置的計(jì)算結(jié)果不一致。矩陣轉(zhuǎn)置運(yùn)算——共軛轉(zhuǎn)置數(shù)組轉(zhuǎn)置運(yùn)算——非共軛轉(zhuǎn)置43函數(shù)的主要類別三角函數(shù)指數(shù)運(yùn)算函數(shù)復(fù)數(shù)運(yùn)算函數(shù)圓整和求余函數(shù)函數(shù)在處理參數(shù)時(shí),是按照數(shù)組運(yùn)算的規(guī)則進(jìn)行的基本數(shù)學(xué)函數(shù)
44三角函數(shù)基本數(shù)學(xué)函數(shù)(續(xù))函數(shù)說明函數(shù)說明函數(shù)說明sin正弦函數(shù)tanh雙曲正切函數(shù)csch雙曲余割函數(shù)sinh雙曲正弦函數(shù)atan反正切函數(shù)acsc反余割函數(shù)asin反正弦函數(shù)atan2四象限反正切函數(shù)acsch反雙曲余割函數(shù)asinh反雙曲正弦函數(shù)atanh反雙曲正切函數(shù)cot余切函數(shù)cos余弦函數(shù)sec正割函數(shù)coth雙曲余切函數(shù)cosh雙曲余弦函數(shù)sech雙曲正割函數(shù)acot反余切函數(shù)acos反余弦函數(shù)asec反正割函數(shù)acoth反雙曲余切函數(shù)acosh反雙曲余弦函數(shù)asech雙曲反正割函數(shù)tan正切函數(shù)csc余割函數(shù)45指數(shù)運(yùn)算函數(shù)基本數(shù)學(xué)函數(shù)(續(xù))函數(shù)說明函數(shù)說明exp指數(shù)函數(shù)realpow實(shí)數(shù)冪運(yùn)算函數(shù)log自然對數(shù)函數(shù)reallog實(shí)數(shù)自然對數(shù)函數(shù)log10常用對數(shù)函數(shù)realsqrt實(shí)數(shù)平方根函數(shù)log2以2為底的對數(shù)函數(shù)sqrt平方根函數(shù)pow22的冪函數(shù)nextpow2求大于輸入?yún)?shù)的第一個(gè)2的冪46復(fù)數(shù)運(yùn)算函數(shù)基本數(shù)學(xué)函數(shù)(續(xù))函數(shù)說明函數(shù)說明abs求復(fù)數(shù)的模,若參數(shù)為實(shí)數(shù)則求絕對值real求復(fù)數(shù)的實(shí)部angle求復(fù)數(shù)的相角unwrap相位角按照360°線調(diào)整complex構(gòu)造復(fù)數(shù)isreal判斷輸入的參數(shù)是否為實(shí)數(shù)conj求復(fù)數(shù)的共軛復(fù)數(shù)cplxpair復(fù)數(shù)陣成共軛對形式排列image求復(fù)數(shù)的虛部47圓整和求余函數(shù)基本數(shù)學(xué)函數(shù)(續(xù))函數(shù)說明函數(shù)說明fix向0取整的函數(shù)mod求模函數(shù)floor向-∞取整的函數(shù)rem求余數(shù)ceil向+∞取整的函數(shù)sign符號(hào)函數(shù)round向最近的整數(shù)取整的函數(shù)48用于矩陣(數(shù)組)操作的常用函數(shù)矩陣(數(shù)組)操作函數(shù)
函數(shù)說明size獲取矩陣的行、列數(shù),對于多維數(shù)組,獲取數(shù)組的各個(gè)維的尺寸length獲取向量長度,若輸入?yún)?shù)為矩陣或多維數(shù)組,則返回各個(gè)維尺寸的最大值ndims獲取矩陣或多維數(shù)組的維數(shù)numel獲取矩陣或數(shù)組的元素個(gè)數(shù)disp顯示矩陣或者字符串內(nèi)容cat合并不同的矩陣或數(shù)組reshape保持矩陣元素的個(gè)數(shù)不變,修改矩陣的行數(shù)和列數(shù)repmat復(fù)制矩陣元素并擴(kuò)展矩陣fliplr交換矩陣左右對稱位置上的元素flipud交換矩陣上下對稱位置上的元素flipdim獲取指定的方向翻轉(zhuǎn)交換矩陣元素find獲取矩陣或者數(shù)組中非零元素的索引49例18:reshape函數(shù)使用示例>>A=1:8A=12345678>>B=reshape(A,2,4)B=13572468>>C=reshape(A,3,3)???Errorusing==>reshapeToRESHAPEthenumberofelementsmustnotchange.矩陣(數(shù)組)操作函數(shù)(續(xù))不能改變矩陣包含元素的個(gè)數(shù)將矩陣A改成2行4列,也可寫成B=reshape(1:8,2,4)50例19:對稱交換函數(shù)使用示例B=13572468>>fliplr(B)ans=
75318642>>flipud(B)ans=
24681357矩陣(數(shù)組)操作函數(shù)(續(xù))flipdim函數(shù)的第二個(gè)參數(shù)必須是大于0的整數(shù):參數(shù)為1時(shí),效果和flipud函數(shù)一致參數(shù)為2時(shí),效果和fliplr函數(shù)一致>>flipdim(B,1)ans=
24681357>>flipdim(B,2)ans=
7531864251例20:repmat使用示例>>A=pascal(2)A=1112>>repmat(A,2,3)ans=
111111
121212111111121212矩陣(數(shù)組)操作函數(shù)(續(xù))repmat函數(shù)的基本語法為:repmat(A,M,N)作用是將指定的矩陣A復(fù)制M×N次,其中M對應(yīng)的是行,N對應(yīng)的是列。52創(chuàng)建復(fù)雜矩陣使用MATLAB提供的矩陣擴(kuò)展方法完成相應(yīng)矩陣的構(gòu)造假設(shè)矩陣A為三階方陣,B為二階方陣,由A和B組合構(gòu)成五階方陣C=[AO;O’B],其中O為相應(yīng)的零矩陣矩陣(數(shù)組)操作函數(shù)(續(xù))53例2-21:>>A=reshape(1:9,3,3);>>B=[12;34];>>O=zeros(length(A),length(B))O=000000>>C=[A
O;O'B]C=
147
00
258
00
369
00
00012
00034矩陣(數(shù)組)操作函數(shù)(續(xù))>>E=[123;456]E=123456>>length(E)ans=3>>F=[123;456;789;427]F=123456789427>>length(F)ans=
454提問:A=reshape(1:9,3,3);B=[12;34];C=
1200034000
00
147
00
258
00
369>>O=zeros(length(B),length(A))O=000000>>C=[BO;O'A]矩陣(數(shù)組)操作函數(shù)(續(xù))>>O=zeros(length(A),length(B))O=000000>>C=[BO';OA]55創(chuàng)建復(fù)雜矩陣?yán)貌煌木仃囘\(yùn)算,通過矩陣合并運(yùn)算符“[]”將不同的矩陣組合在一起構(gòu)成大矩陣>>A=[12;34];>>B=[A,A*2;tril(A),triu(A);A*3,A*4]B=12
24
34
68
10
12
34
04
3648
9121216矩陣(數(shù)組)操作函數(shù)(續(xù))56稀疏矩陣矩陣的存儲(chǔ)方式: 1.全元素(Full)存儲(chǔ)——完全矩陣 2.稀疏(Sparse)存儲(chǔ)——稀疏矩陣稀疏矩陣存在的必要性: 對大多數(shù)元素?cái)?shù)值為0的矩陣,若采用滿陣方式表示,則0元素將占用相當(dāng)?shù)拇鎯?chǔ)空間。稀疏矩陣的特點(diǎn): 只存儲(chǔ)“非零元素”值(按列)和“非零元素”的位置
57對大多數(shù)元素?cái)?shù)值為0的矩陣,創(chuàng)建稀疏矩陣稀疏矩陣建立指令sparse 1、B=sparse(A) 例23.>>A=[2000;0001;0400]A=200000010400>>B=sparse(A)B=(1,1)2(3,2)4(2,4)1一、稀疏矩陣的建立
>>C=[1234;5678;3729];C=123456783729>>B+Cans=3234567931129582、S=sparse(ir,jc,data,m,n)“三元組”表示法ir—非零元素所在的行序號(hào)jc—非零元素所在的列序號(hào)data—非零元素的數(shù)值m—矩陣的行n—矩陣的列稀疏矩陣的建立(續(xù))
向量標(biāo)量59例24.1500220-15011
3000S=000-600000000
91000000028000>>data=[15
91
11
3
28
22
-6-15];>>ir=[1
5
2
2
6
1
31];>>jc=[1
1
2
3
3
4
46];>>S=sparse(ir,jc,data,6,6)S=(1,1)15(5,1)91(2,2)11(2,3)3(6,3)28(1,4)22(3,4)-6(1,6)-15稀疏矩陣的建立(續(xù))
>>full(S)ans=1500220-150113000000-6000000009100000002800060例25>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>full(S)ans=200000010400稀疏矩陣的建立(續(xù))
61在MATLAB命令行窗口中鍵入指令helpsparfun,可以得到稀疏矩陣運(yùn)算函數(shù)列表稀疏矩陣的建立(續(xù))
創(chuàng)建稀疏矩陣speye創(chuàng)建單位稀疏矩陣sprand創(chuàng)建均勻分布的隨機(jī)數(shù)稀疏矩陣sprandn創(chuàng)建正態(tài)分布的隨機(jī)數(shù)稀疏矩陣滿陣和稀疏矩陣之間的轉(zhuǎn)換sparse創(chuàng)建稀疏矩陣或者將滿陣轉(zhuǎn)變?yōu)橄∈杈仃噁ull將稀疏矩陣轉(zhuǎn)變?yōu)闈M陣find獲取非零元素的索引向量稀疏矩陣的操作函數(shù)nnz獲取矩陣的非零元素的個(gè)數(shù)nonzeros獲取矩陣的非零元素向量nzmax獲取矩陣的各個(gè)向量的最大長度spones將稀疏矩陣中的非零元素用數(shù)字1替代issparse判斷輸入?yún)?shù)是否為稀疏矩陣稀疏矩陣的常用函數(shù)621、speye(創(chuàng)建單位稀疏矩陣)speye(m,n)——在行、列相同位置上的元素值為“1”,其余位置上的元素值為“0”speye(m)——是speye(m,m)的簡寫。在對角線上的元素值為“1”,其余位置上的元素值為“0”例26:>>A=speye(3,4)A=(1,1)1(2,2)1(3,3)1>>full(A)ans=100001000010稀疏矩陣的建立(續(xù))
>>B=speye(3,3)B=(1,1)1(2,2)1(3,3)1>>full(B)ans=100010001>>C=speye(3)C=(1,1)1(2,2)1(3,3)1>>full(C)ans=100010001632、find(獲取矩陣非零元素的索引向量)——find(A)例27:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>find(S)ans=1611稀疏矩陣的建立(續(xù))
>>full(S)ans=200000010400643、nonzeros(獲取矩陣的非零元素向量)——nonzeros(A)例27:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>nonzeros(S)ans=241稀疏矩陣的建立(續(xù))
>>full(S)ans=200000010400654、nnz(獲取矩陣的非零元素的個(gè)數(shù))——nnz(A)例28:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>nnz(S)ans=3稀疏矩陣的建立(續(xù))
>>full(S)ans=200000010400665、nzmax(獲取矩陣的各個(gè)向量的最大長度)——nzmax(A)例29:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>nzmax(S)ans=3稀疏矩陣的建立(續(xù))
>>full(S)ans=200000010400676、spones(將稀疏矩陣中的非零元素用數(shù)字1代替)——spones(A)例30:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>A=spones(S)A=(1,1)1(3,2)1(2,4)1>>full(A)ans=100000010100稀疏矩陣的建立(續(xù))
>>full(S)ans=200000010400687、issparse(判斷輸入?yún)?shù)是否為稀疏矩陣)——issparse(A):是,則ans為“1”否,則ans為“0”例31:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>issparse(S)ans=1>>A=[123;456];>>issparse(A)ans=0稀疏矩陣的建立(續(xù))
69稀疏矩陣和普通矩陣(滿陣)之間可以直接進(jìn)行運(yùn)算,運(yùn)算結(jié)果是滿陣
例32:>>A=[2000;0001;0400];>>S=sparse(A)S=(1,1)2(3,2)4(2,4)1>>A+S
ans=400000020800二、稀疏矩陣的運(yùn)算
70稀疏矩陣和稀疏矩陣之間進(jìn)行運(yùn)算,運(yùn)算結(jié)果是稀疏矩陣
例33>>B=[0030;1000;0500];>>T=sparse(B)T=(2,1)1(3,2)5(1,3)3>>S+T
ans=(1,1)2(2,1)1(3,2)9(1,3)3(2,4)1稀疏矩陣的運(yùn)算(續(xù))
>>full(S+T)ans=203010010900>>A+Bans=20301001090071字符串
創(chuàng)建字符串字符串由多個(gè)字符組成,是1×n的字符數(shù)組;每一個(gè)字符都是字符數(shù)組的一個(gè)元素,以ASCII碼的形式存放并區(qū)分大小,而顯示的形式則是可讀的字符。創(chuàng)建字符串>>s1='matlab7.3's1=matlab7.372(1)直接賦值用單引號(hào)('')括起字符來直接賦值創(chuàng)建字符串。使用兩個(gè)單引號(hào)('')輸入字符串中的單引號(hào)>>s3='顯示''matlab'''s3=顯示‘matlab’(2)多個(gè)字符串組合>>str2=[s1;s2,'';s3]str2=matlab7.3字符串顯示'matlab'
2.字符數(shù)組的存儲(chǔ)空間MATLAB在存儲(chǔ)字符串時(shí),每一個(gè)字符以ASCII碼的形式存放,占用兩個(gè)字節(jié)。73字符串函數(shù)1.字符串合并strcat函數(shù)用于將字符串水平連接合并成一個(gè)新字符串,合并的同時(shí)會(huì)將字符串尾的空格刪除。語法格式如下:strcat(s1,s2,…) %將s1,s2…合并成一個(gè)長字符串char(s1,s2,…) %將s1,s2…合并成一個(gè)字符數(shù)組strvcat(s1,s2,…) %將s1,s2…合并成一個(gè)字符數(shù)組742.字符串與數(shù)值的轉(zhuǎn)換abs將字符串轉(zhuǎn)換為ASCII碼數(shù)值str2num將字符串轉(zhuǎn)換為數(shù)值str2double將元胞字符串?dāng)?shù)組轉(zhuǎn)換為數(shù)值3.字符串的其他操作MATLAB7.3還可以對字符串進(jìn)行比較、查找、運(yùn)行等操作。75例2-19使用字符串函數(shù)進(jìn)行運(yùn)算。>>str='a+b,c+d,'str=a+b,c+d,>>str1=strrep(str1,',','*2') %將,用*2替換str1=a+b*2>>a=5>>b=2>>eval(str1) %執(zhí)行字符串str1ans=9>>str2=upper(str2) %將字符串轉(zhuǎn)換為大寫字母str2=C+D,76日期和時(shí)間
日期時(shí)間的表示格式MATLAB7.3以三種格式表示:日期字符串、連續(xù)的日期數(shù)值和日期向量,不同的日期格式可以相互轉(zhuǎn)換。1.日期格式(1)日期字符串日期字符串是最常用的,有多種輸出格式。例,“2007年1月1日”可以表示為:‘01-Jan-200708:50:10’、‘01-Jan-2007’、‘01/01/2007’、等。(2)連續(xù)的日期數(shù)值 733043(3)日期向量[yearmonthdayhourminutesecond]77日期時(shí)間函數(shù)1.獲取系統(tǒng)時(shí)間date:按照日期字符串格式獲取當(dāng)前系統(tǒng)時(shí)間;now:按照連續(xù)的日期數(shù)值格式獲取當(dāng)前系統(tǒng)時(shí)間;clock:按照日期向量格式獲取當(dāng)前系統(tǒng)時(shí)間。2.提取日期時(shí)間信息分別使用year、month、day、hour、minute、second函數(shù)。3.日期時(shí)間的顯示格式日期時(shí)間的顯示可以使用datestr函數(shù)顯示為字符串的樣式。datestr函數(shù)的格式如下:datestr(d,f) %將日期按指定格式顯示784.計(jì)時(shí)函數(shù)(1)cputime方法cputime是返回MATLAB啟動(dòng)以來的CPU時(shí)間:程序執(zhí)行的時(shí)間=程序代碼執(zhí)行結(jié)束后的cputime-在程序代碼執(zhí)行前的cputime(2)tic/toc方法tic在程序代碼開始用于啟動(dòng)的一個(gè)計(jì)時(shí)器;toc放在程序代碼的最后,用于終止計(jì)時(shí)器的運(yùn)行,并返回計(jì)時(shí)時(shí)間就是程序運(yùn)行時(shí)間。(3)etime方法etime方法使用etime函數(shù)來獲得程序運(yùn)行時(shí)間,etime函數(shù)的命令格式如下:etime(t1,t0) %返回t1-t0的值79結(jié)構(gòu)體和元胞數(shù)組
元胞數(shù)組元胞數(shù)組是常規(guī)數(shù)值數(shù)組的擴(kuò)展,其基本元素是元胞,每一個(gè)元胞可以看成是一個(gè)單元(Cell),用來存放各種不同類型不同尺寸的數(shù)據(jù),如矩陣、多維數(shù)組、字符串、元胞數(shù)組和結(jié)構(gòu)體。元胞數(shù)組可以是一維、二維或多維,使用花括號(hào)({})表示,每一個(gè)元胞以下標(biāo)區(qū)分,下標(biāo)的編碼方式也與矩陣相同,分為單下標(biāo)方式和全下標(biāo)方式。801.創(chuàng)建元胞數(shù)組(1)直接創(chuàng)建>>A={'cell1',[12;34];{[12],'matlab'},0:1:5}>>A(1,1)={'cell1'};>>A(1,2)={[12;34]};>>A(2,1)={{[12],'matlab'}};>>A(2,2)={0:1:5}>>A{1,1}='cell1';>>A{1,2}=[12;34];>>A{2,1}={[12],'matlab'};>>A{2,2}=0:1:5cell1,1cell1,2cell2,1cell2,2'cell1'012345123412'matlab'81例2-22使用cell函數(shù)創(chuàng)建元胞數(shù)組。>>A=cell(2,2) %創(chuàng)建空的元胞數(shù)組>>A{1,1}='cell1'(2)使用cell函數(shù)創(chuàng)建cell函數(shù)創(chuàng)建元胞數(shù)組的語法格式:A=cell(m,n) %創(chuàng)建m×n元胞數(shù)組82關(guān)系運(yùn)算和邏輯運(yùn)算
邏輯運(yùn)算MATLAB7.3中邏輯型(logical)數(shù)據(jù)只有“1”和“0”,分別表示true和false兩種狀態(tài),邏輯型變量只占1個(gè)字節(jié)。函數(shù)logical可以用來將數(shù)值型轉(zhuǎn)換為邏輯型,任何非零的數(shù)值都轉(zhuǎn)換為邏輯1,數(shù)值0轉(zhuǎn)換為邏輯0。83關(guān)系運(yùn)算MATLAB7.3常用的關(guān)系操作符有<、<=、>、>=、==(等于)、~=(不等于)。關(guān)系運(yùn)算規(guī)則:如果比較的兩個(gè)變量都是標(biāo)量,則結(jié)果為1(true)或0(false);如果比較的兩個(gè)變量都是數(shù)組,則必須尺寸大小相同,結(jié)果也是同樣大小的數(shù)組;如果比較的是一個(gè)數(shù)組和一個(gè)標(biāo)量,則把數(shù)組的每個(gè)元素分別與標(biāo)量比較,結(jié)果為與數(shù)組大小相同的數(shù)組。84邏輯運(yùn)算1.元素的邏輯運(yùn)算元素的邏輯運(yùn)算是將數(shù)組中的元素一一進(jìn)行邏輯運(yùn)算,常用的邏輯運(yùn)算符:&(與)、|(或)、~(非)和xor(異或)。在邏輯運(yùn)算中,非0元素表示true,0元素表示false。2.先決邏輯運(yùn)算先決邏輯運(yùn)算符有:&&(先決與)和||(先決或)。3.位邏輯運(yùn)算位邏輯運(yùn)算函數(shù)有:bitand(位與)、bitor(位或)、bitcmp(位非)和bitxor(位異或)。練習(xí)85運(yùn)算符優(yōu)先級(jí)各類運(yùn)算符的優(yōu)先級(jí)為:括號(hào)→算術(shù)運(yùn)算符→關(guān)系運(yùn)算符→邏輯運(yùn)算符各符號(hào)優(yōu)先順序?yàn)椋豪ㄌ?hào)()→轉(zhuǎn)置'.'冪^.^→一元加減+-邏輯非~→乘*.*除/./\.\→加減+-→冒號(hào):→關(guān)系運(yùn)算>>=<<===~=→元素邏輯運(yùn)算與&→元素邏輯運(yùn)算或|→先決邏輯運(yùn)算與&&→先決邏輯運(yùn)算或||86matlab語言把多項(xiàng)式表達(dá)成一個(gè)行向量,該向量中的元素是按多項(xiàng)式降冪排列的。f(x)=anxn+an-1xn-1+……+a0
可用行向量p=[anan-1……a1a0]表示poly——產(chǎn)生特征多項(xiàng)式系數(shù)向量特征多項(xiàng)式一定是n+1維的特征多項(xiàng)式第一個(gè)元素一定是1多項(xiàng)式運(yùn)算87例:a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00p是多項(xiàng)式p(x)=x3-6x2-72x-27的matlab描述方法,我們可用:p1=poly2str(p,‘x’)—函數(shù)文件,顯示數(shù)學(xué)多項(xiàng)式的形式p1=x^3-6x^2-72x-27882.roots——求多項(xiàng)式的根a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00r=roots(p)r=12.12-5.73——顯然r是矩陣a的特征值-0.3989當(dāng)然我們可用poly令其返回多項(xiàng)式形式p2=poly(r)p2=1.00-6.00-72.00-27.00matlab規(guī)定多項(xiàng)式系數(shù)向量用行向量表示,一組根用列向量表示。903.conv,convs多項(xiàng)式乘運(yùn)算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;c=(x2+2x+3)(4x2+5x+6)a=[123];b=[456];c=conv(a,b)=conv([123],[456])c=4.0013.0028.0027.0018.00p=poly2str(c,'x')p=4x^4+13x^3+28x^2+27x+18914.deconv多項(xiàng)式除運(yùn)算a=[123];c=[4.0013.0028.0027.0018.00]d=deconv(c,a)d=4.005.006.00[d,r]=deconv(c,a)余數(shù)c除a后的整數(shù)925.多項(xiàng)式微分matlab提供了polyder函數(shù)多項(xiàng)式的微分。命令格式:polyder(p):求p的微分polyder(a,b):求多項(xiàng)式a,b乘積的微分[p,q]=polyder(a,b):求多項(xiàng)式a,b商的微分例:a=[12345];poly2str(a,'x')ans=x^4+2x^3+3x^2+4x+5b=polyder(a)b=4664poly2str(b,'x')ans=4x^3+6x^2+6x+493代數(shù)方程組求解matlab中有兩種除運(yùn)算左除和右除。對于方程ax+b,a為an×m矩陣,有三種情況:當(dāng)n=m時(shí),此方程成為“恰定”方程當(dāng)n>m時(shí),此方程成為“超定”方程當(dāng)n<m時(shí),此方程成為“欠定”方程matlab定義的除運(yùn)算可以很方便地解上述三種方程941.恰定方程組的解方程ax+b(a為非奇異)x=a-1
b矩陣逆兩種解:x=inv(a)
b—采用求逆運(yùn)算解方程x=a\b—采用左除運(yùn)算解方程95方程ax=ba=[12;23];b=[8;13];
x=inv(a)*b
x=a\bx=x=2.002.003.003.00
=
ax=b例:x1+2x2=82x1+3x2=13962.超定方程組的解方程ax=b,m<n時(shí)此時(shí)不存在唯一解。方程解(a'a)x=a'bx=(a'
a)-1a'b——求逆法x=a\b——matlab用最小二乘法找一個(gè)準(zhǔn)確地基本解。
97例:x1+2x2=12x1+3x2=23x1+4x2=3a=[12;23;34];b=[1;2;3];解1x=a\b解2x=inv(a'
a)
a'
b
x=x=1.001.0000.00
=
ax=b983.欠定方程組的解
當(dāng)方程數(shù)少于未知量個(gè)數(shù)時(shí),即不定情況,有無窮多個(gè)解存在。matlab可求出兩個(gè)解:用除法求的解x是具有最多零元素的解是具有最小長度或范數(shù)的解,這個(gè)解是基于偽逆pinv求得的。99x1+2x2+3x3=12x1+3x2+4x3=2a=[123;234];b=[1;2];x=a\bx=pinv(a)
bx=x=1.000.8300.330-0.17=ax=b100編程基礎(chǔ)MATLAB的工作模式指令驅(qū)動(dòng)模式通常MATLAB以指令驅(qū)動(dòng)模式工作,即在MATLABM命令行窗口下用戶輸入單行指令時(shí),MATLAB立即處理這條指令,并顯示結(jié)果,這就是MATLAB命令行方式。命令行方式程序可讀性差,而且不能存儲(chǔ),當(dāng)處理復(fù)雜問題和大量數(shù)據(jù)時(shí)很不方便。M文件模式將MATLAB語句構(gòu)成的程序存儲(chǔ)成以m為擴(kuò)展名的文件,然后再執(zhí)行該程序文件,這種工作模式稱為程序文件模式。程序文件不能在指令窗口下建立,因?yàn)橹噶畲翱谥辉试S一次執(zhí)行一行上的一個(gè)或幾個(gè)語句。101
MATLAB通過M語言來實(shí)現(xiàn)完整的編寫應(yīng)用程序的能力
M語言
M語言是一種解釋性語言,利用該語言編寫的代碼僅能被MATLAB接受,被MATLAB解釋、執(zhí)行。
M語言文件可以分為腳本文件和函數(shù)文件
一個(gè)M語言文件就是由若干MATLAB的命令組合在一起構(gòu)成的。
M語言文件是標(biāo)準(zhǔn)的純文本格式的文件,其文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 語文初三上冊知識(shí)總結(jié)
- 2025年交流點(diǎn)焊機(jī)項(xiàng)目可行性研究報(bào)告
- 防火防災(zāi)知識(shí)教育
- 2025年乳化泵專用密封圈項(xiàng)目可行性研究報(bào)告
- 問題學(xué)生的教育轉(zhuǎn)化
- 肺炎病人護(hù)理措施
- 2025年北京寫字樓租賃合同樣本
- 初級(jí)會(huì)計(jì)師試題及答案獲取技巧
- 2025臨時(shí)性勞動(dòng)合同協(xié)議(短期用工合同)
- 嬰兒養(yǎng)成良好習(xí)慣的策略測試試題及答案
- 譯林版六年級(jí)英語下冊期中試卷及答案【真題】
- 湖南省示范性高中2024-2025學(xué)年高二下學(xué)期2月聯(lián)考 物理試卷(含解析)
- 2025年《宏觀經(jīng)濟(jì)政策與發(fā)展規(guī)劃》考前通關(guān)必練題庫(含答案)
- 服裝公司品質(zhì)(質(zhì)量)管理手冊
- 一年級(jí)道德與法治下冊素養(yǎng)教案第10課 相親相愛一家人
- 辦公樓弱電系統(tǒng)設(shè)計(jì)方案
- 私募投資學(xué)試題及答案
- 2025屆山東省青島市高三下學(xué)期一模讀后續(xù)寫+替補(bǔ)隊(duì)員+講義
- 藥物臨床試驗(yàn)科普
- 2025年合肥二模數(shù)學(xué)試題及答案
- 不要慌太陽下山有月光二部合唱簡譜
評論
0/150
提交評論