MATLAB教程(第5版R2021a) 課件 第2章 MATLAB數(shù)值計(jì)算_第1頁(yè)
MATLAB教程(第5版R2021a) 課件 第2章 MATLAB數(shù)值計(jì)算_第2頁(yè)
MATLAB教程(第5版R2021a) 課件 第2章 MATLAB數(shù)值計(jì)算_第3頁(yè)
MATLAB教程(第5版R2021a) 課件 第2章 MATLAB數(shù)值計(jì)算_第4頁(yè)
MATLAB教程(第5版R2021a) 課件 第2章 MATLAB數(shù)值計(jì)算_第5頁(yè)
已閱讀5頁(yè),還剩140頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章MATLAB數(shù)值計(jì)算——變量和數(shù)據(jù)01數(shù)據(jù)類(lèi)型整型浮點(diǎn)型字符型邏輯型數(shù)據(jù)類(lèi)型1.整型MATLAB提供了8種內(nèi)置的整數(shù)類(lèi)型,每種數(shù)據(jù)類(lèi)型占用的字節(jié)和表示的范圍都不同,可以使用類(lèi)型轉(zhuǎn)換函數(shù)將各種整數(shù)類(lèi)型強(qiáng)制相互轉(zhuǎn)換,如表。數(shù)據(jù)類(lèi)型表示范圍字

節(jié)

數(shù)類(lèi)型轉(zhuǎn)換函數(shù)無(wú)符號(hào)8位整數(shù)uint80~28-11uint8()無(wú)符號(hào)16位整數(shù)uint160~216-12uint16()無(wú)符號(hào)32位整數(shù)uint320~232-14uint32()無(wú)符號(hào)64位整數(shù)uint640~264-18uint64()有符號(hào)8位整數(shù)int8-27~27-11int8()有符號(hào)16位整數(shù)int16-215~215-12int16()有符號(hào)32位整數(shù)int32-231~231-14int32()有符號(hào)64位整數(shù)int64-263~263-18int64()數(shù)據(jù)類(lèi)型2.浮點(diǎn)型浮點(diǎn)數(shù)包括了單精度型(single)和雙精度型(double),MATLAB默認(rèn)的數(shù)據(jù)類(lèi)型為雙精度型,表中列出了各種浮點(diǎn)數(shù)的數(shù)值范圍和類(lèi)型轉(zhuǎn)換函數(shù)。數(shù)據(jù)類(lèi)型表示范圍字

節(jié)

數(shù)類(lèi)型轉(zhuǎn)換函數(shù)單精度型(single)-3.40282×1038

~+3.40282×10384single()雙精度型(double)-1.79769×10308

~+1.79769×103088double()3.字符型在MATLAB中,字符型數(shù)據(jù)使用單引號(hào)('')括起來(lái)。字符使用ASCII碼的形式存放,每個(gè)字符占2字節(jié)。數(shù)據(jù)類(lèi)型4.邏輯型邏輯型數(shù)據(jù)表示為true和false,每個(gè)邏輯型數(shù)據(jù)占1字節(jié)。使用logical函數(shù)可以將數(shù)值型轉(zhuǎn)換成邏輯型,所有非0的整數(shù)和浮點(diǎn)數(shù)都轉(zhuǎn)換成1(true),0轉(zhuǎn)換成0(false)?!纠?.1】各種數(shù)據(jù)類(lèi)型的轉(zhuǎn)換。>>a=5;>>b=0;>>c=67;>>u1=uint8(a) %轉(zhuǎn)換成無(wú)符號(hào)整型u1=

uint8 5>>s1=char(c) %轉(zhuǎn)換成字符型,為字母"C"s1= 'C'>>l1=logical(b) %轉(zhuǎn)換成邏輯型,為falsel1=

logical 0數(shù)據(jù)類(lèi)型從工作區(qū)窗口可查看各個(gè)變量所占的字節(jié)數(shù)和數(shù)據(jù)類(lèi)型,如圖。02常

數(shù)常數(shù)的表達(dá)方式矩陣和數(shù)組的概念復(fù)數(shù)常

數(shù)1.常數(shù)的表達(dá)方式MATLAB的數(shù)據(jù)采用十進(jìn)制表示,可以用帶小數(shù)點(diǎn)的形式直接表示,也可以用科學(xué)記數(shù)法,eps為相對(duì)精度位數(shù),數(shù)值的表示范圍是10

308~10308。以下都是合法的數(shù)據(jù)表示方式:

2、5.67;2.56e

56(表示2.56

10

56);4.68e204(表示4.68

10204)。2.矩陣和數(shù)組的概念在MATLAB的運(yùn)算中,會(huì)經(jīng)常使用標(biāo)量、向量、矩陣和數(shù)組,這幾個(gè)名稱(chēng)的定義如下。(1)標(biāo)量:是指1

1的矩陣,即為只含1個(gè)數(shù)的矩陣。(2)向量:是指1

n或n

1的矩陣,即只有1行或者1列的矩陣。(3)矩陣:是1個(gè)矩形的數(shù)組,即二維數(shù)組,其中向量和標(biāo)量都是矩陣的特例,0

0矩陣為空矩陣([])。(4)數(shù)組:是指n維的數(shù)組,為矩陣的延伸,其中矩陣和向量都是數(shù)組的特例。常

數(shù)3.復(fù)數(shù)復(fù)數(shù)由實(shí)部和虛部組成,MATLAB用特殊變量“i”和“j”表示虛數(shù)的單位。復(fù)數(shù)運(yùn)算不需要特殊處理,可以直接進(jìn)行。復(fù)數(shù)可以有以下幾種表示方式:z=a+b*i或z=a+b*jz=a+bi或z=a+bj(當(dāng)b為常量時(shí))z=r*exp(i*

)可以用real、imag、abs和angle函數(shù)分別得出1個(gè)復(fù)數(shù)的實(shí)部、虛部、幅值和相角。語(yǔ)法:a=real(z) %計(jì)算實(shí)部b=imag(z) %計(jì)算虛部r=abs(z) %計(jì)算幅值theta=angle(z) %計(jì)算相角說(shuō)明:復(fù)數(shù)z的實(shí)部a=r*cos(

);復(fù)數(shù)z的虛部b=r*sin(

);復(fù)數(shù)z的幅值;復(fù)數(shù)z的相角

=arctan(b/a),以rad(弧度)為單位。常

數(shù)【例2.2】在命令行窗口中輸入復(fù)數(shù)。>>a=1-2*ia= 1.0000-2.0000i>>real(a)ans= 1>>imag(a)ans= -2>>abs(a)ans= 2.2361>>angle(a)*180/pi %以角度為單位計(jì)算相角ans= -63.434903變

量變量的命名規(guī)則特殊變量變

量1.變量的命名規(guī)則MATLAB的變量有一定的命名規(guī)則。變量的命名規(guī)則如下:(1)變量名區(qū)分字母的大、小寫(xiě)。例如,“a”和“A”是不同的變量。(2)變量名不能超過(guò)63個(gè)字符,第63個(gè)字符后的字符被忽略,MATLAB7.3版以前的變量名不能超過(guò)31個(gè)字符。(3)變量名必須以字母開(kāi)頭,變量名的組成可以是任意字母、數(shù)字或者下畫(huà)線,但不能含有空格和標(biāo)點(diǎn)符號(hào)(如。、%等)。例如,“6ABC”“AB%C”都是不合法的變量名。(4)關(guān)鍵字(如if、while等)不能作為變量名。變

量2.特殊變量MATLAB有一些自己的特殊變量,是由系統(tǒng)自動(dòng)定義的,當(dāng)MATLAB啟動(dòng)時(shí)駐留在內(nèi)存,但在工作區(qū)中卻看不到。特殊變量如表。特殊變量取

值ans默認(rèn)的運(yùn)算結(jié)果變量名,answer的縮寫(xiě)pi圓周率

eps計(jì)算機(jī)的最小數(shù)flops浮點(diǎn)運(yùn)算數(shù)inf無(wú)窮大,如1/0NaN或nan非數(shù),如0/0、∞/∞、0

∞i或ji=j=

nargin函數(shù)的輸入變量數(shù)目nargout函數(shù)的輸出變量數(shù)目realmin最小的可用正實(shí)數(shù)realmax最大的可用正實(shí)數(shù)當(dāng)沒(méi)有給變量賦值時(shí),計(jì)算的結(jié)果自動(dòng)賦給名為“ans”(answer的縮寫(xiě))的變量。例如,在命令窗口中輸入并計(jì)算2

:>>2*pians=6.2832第2章MATLAB數(shù)值計(jì)算——矩陣和數(shù)組01矩陣輸入通過(guò)顯式元素列表輸入矩陣通過(guò)語(yǔ)句生成矩陣由函數(shù)產(chǎn)生特殊矩陣矩陣輸入1.通過(guò)顯式元素列表輸入矩陣對(duì)于比較小的簡(jiǎn)單矩陣,可以通過(guò)顯式元素列表直接用鍵盤(pán)輸入矩陣。例如,輸入矩陣c:>>c=[12;34;53*2] %[]表示構(gòu)成矩陣,分號(hào)分隔行,空格分隔元素c=123456也可以輸入:>>c=[1,2;3,4;5,6]; %逗號(hào)分隔元素對(duì)于較為復(fù)雜的矩陣,為了使輸入方式更符合用戶(hù)習(xí)慣,可以用回車(chē)鍵代替分號(hào)分隔行。例如,矩陣c也可以這樣輸入:>>c=[123456]矩陣輸入2.通過(guò)語(yǔ)句生成矩陣通過(guò)語(yǔ)句生成矩陣有以下幾種方式。(1)使用from:step:to方式生成行向量。如果是線性等間距格式的向量,則可以使用from:step:to方式生成。語(yǔ)法:from:tofrom:step:to說(shuō)明:from、step和to分別表示開(kāi)始值、步長(zhǎng)和結(jié)束值。當(dāng)step省略時(shí)則默認(rèn)為step=1;當(dāng)step省略或step>0而from>to時(shí)為空矩陣;當(dāng)step<0而from<to時(shí)也為空矩陣。矩陣輸入【例2.3_1】

使用from:step:to方式生成矩陣。>>x1=2:5x1=2345>>x2=2:0.5:4x2=2.00002.50003.00003.50004.0000>>x3=5:-1:2x3=5432>>x4=2:-1:3 %空矩陣x4=

空的1×0double行向量>>x5=2:-1:0.5x5=21>>x6=[1:2:5;1:3:7] %兩行向量構(gòu)成矩陣x6=135147矩陣輸入(2)使用linspace和logspace函數(shù)生成向量。①linspace用來(lái)生成線性等分向量。與from:step:to方式不同的是,它直接給出元素的個(gè)數(shù)從而得出各個(gè)元素的值。語(yǔ)法:linspace(a,b,n)說(shuō)明:a、b、n這3個(gè)參數(shù)分別表示開(kāi)始值、結(jié)束值和元素個(gè)數(shù)。生成從a到b之間線性分布的n個(gè)元素的行向量,n如果省略則默認(rèn)值為100。②logspace用來(lái)生成對(duì)數(shù)等分向量,它和linspace一樣直接給出元素的個(gè)數(shù)從而得出各個(gè)元素的值。在畫(huà)Bode圖等應(yīng)用中,需要使用logspace命令生成對(duì)數(shù)等間隔的數(shù)據(jù)。語(yǔ)法:logspace(a,b,n)說(shuō)明:a、b、n這3個(gè)參數(shù)分別表示開(kāi)始值、結(jié)束值和數(shù)據(jù)個(gè)數(shù),n如果省略則默認(rèn)值為50。生成從10a到10b之間按對(duì)數(shù)等分的n個(gè)元素的行向量。矩陣輸入【例2.3_2】

用linspace和logspace函數(shù)生成行向量。>>x1=linspace(0,2*pi,5) %從0到2*pi等分成5個(gè)點(diǎn)x1=01.57083.14164.71246.2832>>x2=logspace(0,2,3) %從1~100對(duì)數(shù)等分成3個(gè)點(diǎn)x2=110100矩陣輸入3.由函數(shù)產(chǎn)生特殊矩陣MATLAB提供了很多能夠產(chǎn)生特殊矩陣的函數(shù),各函數(shù)的功能如表。函

數(shù)

名功

能例

子輸

入結(jié)

果zeros(m,n)產(chǎn)生m

n的全0矩陣zeros(2,3)000000ones(m,n)產(chǎn)生m

n的全1矩陣ones(2,3)111111rand(m,n)產(chǎn)生均勻分布的隨機(jī)矩陣,元素取值范圍為0.0~1.0rand(2,3)0.95010.60680.89130.23110.48600.7621randn(m,n)產(chǎn)生正態(tài)分布的隨機(jī)矩陣randn(2,3)

0.43260.1253

1.1465

1.66560.28771.1909magic(N)產(chǎn)生N階魔方矩陣(矩陣的行、列和對(duì)角線上元素的和相等)magic(3)816357492eye(m,n)產(chǎn)生m

n的單位矩陣eye(3)100010001true(m,n)false(m,n)產(chǎn)生m

n的邏輯矩陣,全為true產(chǎn)生m

n的邏輯矩陣,全為falsetrue(2,3)111111矩陣輸入【例2.4】

使用函數(shù)創(chuàng)建矩陣。>>X1=eye(2,3) %2行3列的單位矩陣X1= 100 010>>X2=eye(3) %3行3列的單位矩陣X2= 100 010 001>>t=true(3) %3行3列的全true矩陣t= 3×3logical

數(shù)組 111 111 111>>t(1:2,3)=false(2,1) %1,2行的第2列改為falset= 3×3logical

數(shù)組 110 110 111說(shuō)明:當(dāng)eye(m,n)函數(shù)的m和n參數(shù)不相等時(shí),則單位矩陣會(huì)出現(xiàn)全0行或列。false(2,1)是2行1列的矩陣。02矩陣元素矩陣的下標(biāo)子矩陣塊的產(chǎn)生方式矩陣的賦值矩陣元素的刪除操作生成大矩陣矩陣的翻轉(zhuǎn)矩陣元素1.矩陣的下標(biāo)以下介紹矩陣的下標(biāo)方式。(1)全下標(biāo)方式。矩陣中的元素可以用全下標(biāo)方式標(biāo)識(shí),即由行下標(biāo)和列下標(biāo)表示,1個(gè)m

n的A矩陣的第i行第j列的元素表示為A(i,j)。例如“A(3,2)=6”表示在矩陣A的“第3行第2列”的元素賦值為6。【例2.5_1】

給矩陣的元素賦值。>>a=[12;34;56]a=123456>>a(3,3) %提取a(3,3)的值位置2處的索引超出數(shù)組邊界(不能超出2)。

>>a(3,3)=9 %給a(3,3)賦值a=120340569矩陣元素(2)單下標(biāo)方式。矩陣元素也可以用“單下標(biāo)”標(biāo)識(shí),就是先把矩陣的所有列按先左后右的次序連接成“一維長(zhǎng)列”,然后對(duì)元素位置進(jìn)行編號(hào)。以m

n的矩陣A為例,元素A(i,j)對(duì)應(yīng)的“單下標(biāo)”為s=(j

1)

m

i。矩陣A的元素下標(biāo)如圖。矩陣元素2.子矩陣塊的產(chǎn)生方式MATLAB利用矩陣下標(biāo)可以產(chǎn)生子矩陣。對(duì)于a(i,j),如果i和j是向量而不是標(biāo)量,則將獲得指定矩陣的子矩陣塊。子矩陣是從對(duì)應(yīng)矩陣中取出一部分元素構(gòu)成的,如圖所示,分別用全下標(biāo)和單下標(biāo)方式取子矩陣。矩陣元素(1)用全下標(biāo)方式。矩陣A如圖2.3所示,使用以下幾種方式都可以構(gòu)成子矩陣。①a([13],[23]):取行數(shù)為1、3,列數(shù)為2、3的元素構(gòu)成子矩陣。ans= 20 69②a(1:3,2:3):取行數(shù)為1~3,列數(shù)為2~3的元素構(gòu)成子矩陣,“1:3”表示1、2、3行下標(biāo)。ans= 20 40 69矩陣元素③a(:,3):取所有行數(shù),即為1~3,列數(shù)為3的元素構(gòu)成子矩陣,“:”表示所有行或列。ans= 0 0 9④a(1:3,end):取行數(shù)為1~3,列數(shù)為3的元素構(gòu)成子矩陣,用“end”表示某一維數(shù)中的最大值,即3。ans= 0 0 9矩陣元素(2)用單下標(biāo)方式。a([13;26]):取單下標(biāo)為1、3、2、6的元素構(gòu)成子矩陣。ans= 15 36(3)邏輯矩陣。子矩陣也可以利用邏輯矩陣來(lái)標(biāo)識(shí),邏輯矩陣是指大小和對(duì)應(yīng)矩陣相同,而元素值為0或者1的矩陣??梢杂胊(l1,l2)表示子矩陣,其中l(wèi)1、l2為邏輯向量,當(dāng)l1、l2的元素為0則不取該位置元素,反之則取該位置的元素。矩陣元素【例2.5_2】

利用邏輯矩陣提取矩陣。被提取的矩陣見(jiàn)前圖“A矩陣的元素”。>>l1=logical([101]) %給出邏輯向量l1l1= 1×3logical

數(shù)組 101>>l2=logical([110]) %給出邏輯向量l2l2= 1×3logical

數(shù)組 110>>a(l1,l2) %取出1、3行且1、2列的元素ans= 12 56矩陣元素3.矩陣的賦值給矩陣元素賦值,有以下幾種方式。①全下標(biāo)方式:A(i,j)=B,給A矩陣的部分元素賦值,則B矩陣的行列數(shù)必須等于A矩陣的行列數(shù)?!纠?.6_1】

以全下標(biāo)方式給矩陣元素賦值。>>a(1:2,1:3)=[111;111] %給第1、2行元素賦值為全1a= 111 111②單下標(biāo)方式:A(s)=b,b為向量,元素個(gè)數(shù)必須等于A矩陣的元素個(gè)數(shù)?!纠?.6_2】

以單下標(biāo)方式給矩陣元素賦值。>>a(5:6)=[23] %給第5、6個(gè)元素賦值a= 112 113矩陣元素③全元素方式:A(:)=B,給A矩陣的所有元素賦值,則B矩陣的元素總數(shù)必須等于A矩陣的元素總數(shù),但行列數(shù)不一定相等。>>a=[12;34;56]a= 12 34 56>>b=[123;456]b= 123 456>>a(:)=b %按單下標(biāo)方式給a賦值a= 15 43 26說(shuō)明:如果改為“a=b”,則a就是2行3列的矩陣。矩陣元素4.矩陣元素的刪除操作在MATLAB中可以對(duì)矩陣的單個(gè)元素、子矩陣塊和所有元素進(jìn)行刪除操作,方法就是簡(jiǎn)單地將其賦值為空矩陣(用[]表示)?!纠?.7】

對(duì)矩陣元素進(jìn)行刪除。對(duì)前圖“A矩陣的元素”的矩陣刪除元素。>>a(:,3)=[] %刪除1列元素a= 12 34 56>>a(1)=[] %按單下標(biāo)方式刪除1個(gè)元素,則矩陣變?yōu)樾邢蛄縜= 35246>>a=[] %刪除所有元素為空矩陣a= []矩陣元素5.生成大矩陣在MATLAB中,可以通過(guò)方括號(hào)([])將小矩陣連接起來(lái)生成1個(gè)較大的矩陣。【例2.8】

將矩陣連接起來(lái)生成大矩陣。參與連接的矩陣見(jiàn)前圖“A矩陣的元素”。>>[a;a] %連接成6

3的矩陣ans=120340569120340569>>[aa] %連接成3

6的矩陣ans=120120340340569569>>[a(1:2,1:2)10*a(1:2,2:3)] %計(jì)算并連接ans=1220034400矩陣元素6.矩陣的翻轉(zhuǎn)在MATLAB中可以通過(guò)功能強(qiáng)大的矩陣翻轉(zhuǎn)函數(shù)對(duì)矩陣進(jìn)行翻轉(zhuǎn),其功能如表。假設(shè)矩陣A同上例:函

數(shù)

名功

能例

子輸

入結(jié)

果triu(X)產(chǎn)生X矩陣的上三角矩陣,其余元素補(bǔ)0triu(a)120040009tril(X)產(chǎn)生X矩陣的下三角矩陣,其余元素補(bǔ)0tril(a)100340569flipud(X)使矩陣X沿水平軸上下翻轉(zhuǎn)flipud(a)569340120fliplr(X)使矩陣X沿垂直軸左右翻轉(zhuǎn)fliplr(a)021043965flipdim(X,dim)使矩陣X沿特定軸翻轉(zhuǎn):dim=1,按行維翻轉(zhuǎn);dim=2,按列維翻轉(zhuǎn)flipdim(a,1)569340120rot90(X)使矩陣X逆時(shí)針旋轉(zhuǎn)90°rot90(a)00924613503字

串字符串占用的字節(jié)字符串函數(shù)使用1個(gè)變量存儲(chǔ)多個(gè)字符串執(zhí)行字符串顯示字符串字

串在MATLAB中,字符串是作為字符數(shù)組引入的,一個(gè)字符串由多個(gè)字符組成并按行向量進(jìn)行存儲(chǔ),用單引號(hào)('')界定。而其中的每一字符(包括空格)都是以其ASCII碼的形式存放的,只是其外顯形式仍然是可讀的字符?!纠?.9_1】

創(chuàng)建字符串。>>str1='Hello';>>str2='Ilike''MATLAB''' %重復(fù)單引號(hào)來(lái)輸入含有單引號(hào)的字符串str2= 'Ilike'MATLAB''>>str3='你好!'str3= '你好!'字

串1.字符串占用的字節(jié)由于MATLAB在存儲(chǔ)字符串時(shí),每一個(gè)字符會(huì)占用2字節(jié),用“whos”命令查看字符串變量所占用的存儲(chǔ)空間,可以看到Bytes為Size的2倍。>>whosNameSizeBytesClassAttributesstr11x510charstr21x1530charstr31x36char字

串2.字符串函數(shù)字符串可以用以下函數(shù)進(jìn)行運(yùn)算。(1)length:用來(lái)計(jì)算字符串的長(zhǎng)度(即組成字符的個(gè)數(shù))。(2)double:用來(lái)將字符型轉(zhuǎn)換成以ASCII碼為數(shù)值的double型,包括空格(ASCII碼為32)。(3)char:用來(lái)將數(shù)值型按照ASCII碼轉(zhuǎn)換成字符型,省略小數(shù)點(diǎn)后的數(shù)據(jù)。(4)class或ischar:用來(lái)判斷某一個(gè)變量的類(lèi)型。class函數(shù)返回char則表示為字符串,而ischar函數(shù)返回1表示為字符串。(5)strcmp(x,y):比較字符串x和y的內(nèi)容是否相同。返回值如果為1則相同,為0則不同。(6)findstr(x,x1):尋找在某個(gè)長(zhǎng)字符串x中的子字符串x1,返回其起始位置。(7)deblank(x):刪除字符串尾部的空格。(8)eval(x):執(zhí)行字符串,可以將字符串型轉(zhuǎn)換成數(shù)值型。字

串【例2.9_2】

使用字符串函數(shù)和進(jìn)行字符串的數(shù)值運(yùn)算。>>length(str1) %計(jì)算字符串長(zhǎng)度ans=5>>x1=double(str1) %查看字符串的ASCII碼x1=72101108108111>>x2=str1+1 %字符串的數(shù)值運(yùn)算x2=73102109109112>>char(x1) %將ASCII碼轉(zhuǎn)換成字符串形式ans='Hello'>>char(x2)ans='Ifmmp'>>class(str1) %判斷變量類(lèi)型ans='char'>>class(x1)ans='double'>>ischar(str1) %判斷是否為字符型ans=

logical1字

串3.使用1個(gè)變量存儲(chǔ)多個(gè)字符串有如下幾種方法使用1個(gè)變量存儲(chǔ)多個(gè)字符串。(1)使用行向量將多個(gè)字符串變量直接用逗號(hào)(,)連接,組成1個(gè)新的行向量?!纠?.10_1】

多個(gè)字符串構(gòu)成1個(gè)新字符串。>>str1='Hello';>>str2='Ilike''MATLAB''';>>str3=[str1,'!',str2] %多個(gè)字符串并排成一個(gè)行向量str3= 'Hello!Ilike'MATLAB''字

串(2)使用矩陣。將每個(gè)字符串放在1行,多個(gè)字符串可以構(gòu)成1個(gè)二維字符數(shù)組,但必須先在短字符串結(jié)尾補(bǔ)上空格符,以確保每個(gè)字符串(即每一行)的長(zhǎng)度一樣。例如,如果將【例2.10_1】中的str1和str3簡(jiǎn)單地放在1個(gè)二維字符數(shù)組的2行,則MATLAB會(huì)提示出錯(cuò)。>>str5=[str1;str3]錯(cuò)誤使用vertcat要串聯(lián)的數(shù)組的維度不一致?!纠?.10_2】

將短字符串結(jié)尾補(bǔ)上空格符。給str3重新賦值“你好!”并在末尾添加2個(gè)空格,再與str1構(gòu)成一個(gè)二維字符數(shù)組。>>str3='你好!'str3= '你好!'>>str5=[str1;str3,''] %為str3添加2個(gè)空格str5= 2×5char

數(shù)組 'Hello' '你好!'字

串(3)使用函數(shù)。一些專(zhuān)門(mén)的函數(shù)如str2mat、strvcat和char可以構(gòu)造出字符串矩陣,而不必考慮每行的字符數(shù)是否相等,總是按最長(zhǎng)的字符串進(jìn)行設(shè)置,長(zhǎng)度不足的字符串的末尾用空格補(bǔ)齊。【例2.10_3】

使用函數(shù)構(gòu)成1個(gè)二維字符數(shù)組。字

串4.執(zhí)行字符串如果需要直接“執(zhí)行”某一字符串,可以使用eval命令?!纠?.10_4】執(zhí)行字符串。執(zhí)行以下字符串。>>str9='a=2*5'str9='a=2*5'>>eval(str9) %執(zhí)行字符串a(chǎn)=10>>eval('0.4')ans=0.40005.顯示字符串字符串可以直接使用disp命令顯示出來(lái),即使后面加分號(hào)(;)也可以顯示?!纠?.10_5】顯示字符串。>>disp('Pleaseinputmatrixa')Pleaseinputmatrixa04矩陣和數(shù)組運(yùn)算

矩陣運(yùn)算的函數(shù)矩陣和數(shù)組的算術(shù)運(yùn)算矩陣和數(shù)組的轉(zhuǎn)置矩陣和數(shù)組的數(shù)學(xué)函數(shù)關(guān)系操作和邏輯操作運(yùn)算符優(yōu)先級(jí)矩陣和數(shù)組運(yùn)算

1.矩陣運(yùn)算的函數(shù)MATLAB提供了許多矩陣運(yùn)算的函數(shù),使很多復(fù)雜的運(yùn)算變得很簡(jiǎn)單。常用矩陣運(yùn)算函數(shù)如表所示,其中:說(shuō)明:在表2.6中,det(a)=0,或det(a)雖不等于0但數(shù)值很小且接近于0,則計(jì)算inv(a)時(shí),其解的精度比較低,用條件數(shù)(求條件數(shù)的函數(shù)為cond)表示。條件數(shù)越大,其解的精度越低,MATLAB會(huì)提出警告:“條件數(shù)太大,結(jié)果可能不準(zhǔn)確?!?gt;>inv(a)Warning:MatrixisclosetosingularorbadlyscaledResultsmaybeinaccurate.RCOND=1.541976e-018ans=1.0e+016*-0.45040.9007-0.45040.9007-1.80140.9007-0.45040.9007-0.4504矩陣和數(shù)組運(yùn)算

2.矩陣和數(shù)組的算術(shù)運(yùn)算矩陣和數(shù)組的算術(shù)運(yùn)算介紹如下。(1)矩陣和數(shù)組的加、減運(yùn)算①矩陣加、減運(yùn)算表達(dá)式分別為“A+B”和“A-B”。A和B矩陣必須大小相同才可以進(jìn)行加、減運(yùn)算。如果A、B中有1個(gè)是標(biāo)量,則該標(biāo)量與矩陣的每個(gè)元素進(jìn)行運(yùn)算。②數(shù)組的加、減法運(yùn)算規(guī)則與矩陣的完全相同,運(yùn)算符也完全相同。(2)矩陣和數(shù)組的乘法運(yùn)算①矩陣的乘法運(yùn)算表達(dá)式為“A*B”,表示矩陣相乘。矩陣A的列數(shù)必須等于矩陣B的行數(shù),除非其中有1個(gè)是標(biāo)量。②數(shù)組的乘法運(yùn)算表達(dá)式為“A*B”,運(yùn)算符為“*”,表示數(shù)組A和B中的對(duì)應(yīng)元素相乘。A和B數(shù)組必須大小相同,除非其中有1個(gè)是標(biāo)量。矩陣和數(shù)組運(yùn)算

【例2.11】矩陣和數(shù)組的加、減和乘法運(yùn)算。>>x1=[12;34;56];>>x2=eye(3,2)x2=100100>>x=x1+x2 %矩陣相加x=223556>>x12=x1.*x2 %數(shù)組相乘x12=100400>>x1*x2 %矩陣相乘,x1列數(shù)不等于x2行數(shù)錯(cuò)誤使用

*用于矩陣乘法的維度不正確。請(qǐng)檢查并確保第一個(gè)矩陣中的列數(shù)與第二個(gè)矩陣中的行數(shù)匹配。要執(zhí)行按元素相乘,請(qǐng)使用'.*'。相關(guān)文檔

>>x21=x1*x2' %矩陣相乘,x2'是x2的轉(zhuǎn)置x21=120340560矩陣和數(shù)組運(yùn)算

(3)矩陣和數(shù)組的除法①矩陣的除法運(yùn)算表達(dá)式有2種:“A\B”和“A/B”,運(yùn)算符“\”和“/”分別表示左除和右除。一般來(lái)說(shuō),X=A\B是方程A*X=B的解,A\B=A

1*B。當(dāng)A是非奇異的n

n的方陣時(shí),則B是n維列向量,是采用高斯消去法(消元法)得出的;當(dāng)A是m

n的矩陣,B是m維列向量時(shí),則X=A\B得出最小二乘解。X=A/B是X*A=B的解,A/B=A*B

1。其中:A

1是矩陣的逆,也可用inv(A)求逆矩陣。②數(shù)組的除法運(yùn)算表達(dá)式有兩種:“A.\B”和“A./B”,分別為數(shù)組的左除和右除,表示數(shù)組相應(yīng)元素相除。A和B數(shù)組必須大小相同,除非其中有1個(gè)是標(biāo)量。矩陣和數(shù)組運(yùn)算

【例2.12】求解線性方程組。已知方程組

,求解。解1:用矩陣除法來(lái)求解,將該方程變換成AX=B的形式。其中:,>>A=[2-13;31-5;4-11];>>B=[5;5;9];>>X1=A\BX1=2.0000-1.00000.0000解2:使用LU分解和QR分解求解方程組。方程變換成AX=B形式,實(shí)現(xiàn)LU分解后,方程的解為X=U\(L\B);實(shí)現(xiàn)QR分解后,方程的解為X=R\(Q\B)。矩陣和數(shù)組運(yùn)算

(4)矩陣和數(shù)組的乘方①矩陣乘方的運(yùn)算表達(dá)式為“A^B”,其中A可以是矩陣或標(biāo)量。

當(dāng)A為矩陣時(shí),必須為方陣:B為正整數(shù)時(shí),表示A矩陣自乘B次;B為負(fù)整數(shù)時(shí),表示先將矩陣A求逆,再自乘|B|次,僅對(duì)非奇異矩陣成立;B為矩陣時(shí)不能運(yùn)算,會(huì)出錯(cuò);B為非整數(shù)時(shí),涉及特征值和特征向量的求解,將A分解成A=W*D/W,D為對(duì)角陣,則有運(yùn)算式A^B=W*D^B/W。

當(dāng)A為標(biāo)量時(shí):B為矩陣時(shí),將A分解成A=W*D/W,D為對(duì)角陣,則有運(yùn)算式為A^B=W*diag(D.^B)/W。②數(shù)組乘方的運(yùn)算表達(dá)式為“A.^B”。當(dāng)A為矩陣,B為標(biāo)量時(shí),則將A(i,j)自乘B次;當(dāng)A為矩陣,B為矩陣時(shí),A和B數(shù)組必須大小相同,則將A(i,j)自乘B(i,j)次;當(dāng)A為標(biāo)量,B為矩陣時(shí),將A^B(i,j)構(gòu)成新矩陣的第i行第j列元素?!纠?.13_1】

矩陣和數(shù)組的除法和乘方運(yùn)算。矩陣和數(shù)組運(yùn)算

3.矩陣和數(shù)組的轉(zhuǎn)置矩陣和數(shù)組的轉(zhuǎn)置介紹如下。(1)矩陣的轉(zhuǎn)置運(yùn)算A'表示矩陣A的轉(zhuǎn)置,如果矩陣A為復(fù)數(shù)矩陣,則為共軛轉(zhuǎn)置。(2)數(shù)組的轉(zhuǎn)置運(yùn)算A.'表示數(shù)組A的轉(zhuǎn)置,如果數(shù)組A為復(fù)數(shù)數(shù)組,則不是共軛轉(zhuǎn)置。【例2.13_2】

矩陣和數(shù)組的轉(zhuǎn)置運(yùn)算。>>x1=[12;34];>>x2=eye(2);>>x3=x1+x2*ix3=1.0000+1.0000i2.0000+0.0000i3.0000+0.0000i4.0000+1.0000i>>x4=x3' %矩陣轉(zhuǎn)置x4=1.0000-1.0000i3.0000+0.0000i2.0000+0.0000i4.0000-1.0000i>>x5=x3.' %數(shù)組轉(zhuǎn)置為共軛轉(zhuǎn)置x5=1.0000+1.0000i3.0000+0.0000i2.0000+0.0000i4.0000+1.0000i矩陣和數(shù)組運(yùn)算

4.矩陣和數(shù)組的數(shù)學(xué)函數(shù)在MATLAB中exp、sqrt、sin、cos等數(shù)學(xué)函數(shù)可以直接在數(shù)組上使用,這些函數(shù)分別對(duì)數(shù)組的每個(gè)元素進(jìn)行運(yùn)算。數(shù)組的基本函數(shù)如表。函

數(shù)

名含

義函數(shù)

名含

義abs絕對(duì)值或者復(fù)數(shù)模rat有理數(shù)近似sqrt平方根mod模除求余real實(shí)部round四舍五入到整數(shù)imag虛部fix向最接近0取整conj復(fù)數(shù)共軛floor向最接近

∞取整sin正弦ceil向最接近+∞取整cos余弦sign符號(hào)函數(shù)tan正切rem求余數(shù)留數(shù)asin反正弦exp自然指數(shù)acos反余弦log自然對(duì)數(shù)atan反正切l(wèi)og10以10為底的對(duì)數(shù)atan2第四象限反正切pow22的冪sinh雙曲正弦bessel貝塞爾函數(shù)cosh雙曲余弦gamma伽馬函數(shù)tanh雙曲正切

矩陣和數(shù)組運(yùn)算

【例2.14】

使用數(shù)組的算術(shù)運(yùn)算函數(shù)。>>t=linspace(0,2*pi,6)t=01.25662.51333.76995.02656.2832>>y=sin(t) %計(jì)算正弦y=00.95110.5878-0.5878-0.9511-0.0000>>y1=abs(y) %計(jì)算絕對(duì)值,將正弦曲線變成全波整流y1=00.95110.58780.58780.95110.0000>>y2=1-exp(-t).*y %計(jì)算按指數(shù)衰減的正弦曲線y2= 1.00000.72930.95241.01361.00621.0000矩陣和數(shù)組運(yùn)算

下面將矩陣和數(shù)組運(yùn)算進(jìn)行對(duì)比,如表所示,其中S為標(biāo)量,A、B為矩陣。數(shù)組運(yùn)算矩陣運(yùn)算命

令含

義命

令含

義A+B對(duì)應(yīng)元素相加A+B與數(shù)組運(yùn)算相同A

B對(duì)應(yīng)元素相減A

B與數(shù)組運(yùn)算相同S.*B標(biāo)量S分別與B元素的乘積S*B與數(shù)組運(yùn)算相同A.*B數(shù)組對(duì)應(yīng)元素相乘A*B內(nèi)維相同矩陣的乘積S./BS分別被B的元素左除S\BB矩陣分別左除SA./BA的元素被B的對(duì)應(yīng)元素除A/B矩陣A右除B,即A的逆陣與B相乘B.\A結(jié)果一定與上行相同B\AA左除B(一般與上行不同)A.^SA的每個(gè)元素自乘S次A^SA矩陣為方陣時(shí),自乘S次A.^SS為小數(shù)時(shí),對(duì)A各元素分別求非整數(shù)冪,得出矩陣A^SS為小數(shù)時(shí),方陣A的非整數(shù)乘方S.^B分別以B的元素為指數(shù)求冪值S^BB為方陣時(shí),標(biāo)量S的矩陣乘方A.T非共軛轉(zhuǎn)置,相當(dāng)于conj(AT)AT共軛轉(zhuǎn)置exp(A)以自然數(shù)e為底,分別以A的元素為指數(shù)求冪expm(A)A的矩陣指數(shù)函數(shù)log(A)對(duì)A的各元素求對(duì)數(shù)logm(A)A的矩陣對(duì)數(shù)函數(shù)sqrt(A)對(duì)A的各元素求平方根sqrtm(A)A的矩陣平方根函數(shù)f(A)求A各個(gè)元素的函數(shù)值funm(A,'FUN')矩陣的函數(shù)運(yùn)算矩陣和數(shù)組運(yùn)算

5.關(guān)系操作和邏輯操作以下介紹關(guān)系操作和邏輯操作。(1)關(guān)系運(yùn)算MATLAB常用的關(guān)系操作符有<、<=、>、>=、==(等于)和~=(不等于)。關(guān)系運(yùn)算規(guī)則如下:①如果用來(lái)比較的2個(gè)變量都是標(biāo)量,則結(jié)果為真(1)或假(0)。②如果用來(lái)比較的2個(gè)變量都是數(shù)組,則必須大小相同,結(jié)果也是同樣大小的數(shù)組,數(shù)組的元素為0或1。③如果用來(lái)比較的是1個(gè)數(shù)組和1個(gè)標(biāo)量,則把數(shù)組的每個(gè)元素分別與標(biāo)量比較,結(jié)果為與數(shù)組大小相同的數(shù)組,數(shù)組的元素為0或1。④關(guān)系操作符<、<=和>、>=僅對(duì)參加比較變量的實(shí)部進(jìn)行比較,而==和~=則同時(shí)對(duì)實(shí)部和虛部進(jìn)行比較。矩陣和數(shù)組運(yùn)算

(2)邏輯運(yùn)算MATLAB常用的邏輯操作符定義了變量的邏輯比較。邏輯操作符有&(與)、|(或)、~(非)和xor(異或)。邏輯運(yùn)算規(guī)則如下:①在邏輯運(yùn)算中,非0元素表示真(1),0元素表示假(0),邏輯運(yùn)算的結(jié)果為0或1。邏輯運(yùn)算法則如表。aba&ba|b~axor(a,b)000010010111100101111100②如果用來(lái)邏輯運(yùn)算的2個(gè)變量都是標(biāo)量,則結(jié)果為0、1的標(biāo)量。③如果用來(lái)邏輯運(yùn)算的2個(gè)變量都是數(shù)組,則必須大小相同,結(jié)果也是同樣大小的數(shù)組。④如果用來(lái)邏輯運(yùn)算的是1個(gè)數(shù)組和1個(gè)標(biāo)量,則把數(shù)組的每個(gè)元素分別與標(biāo)量比較,結(jié)果為與數(shù)組大小相同的數(shù)組。矩陣和數(shù)組運(yùn)算

⑤&&(先決與)邏輯運(yùn)算符是當(dāng)該運(yùn)算符的左邊為1(真)時(shí),才繼續(xù)執(zhí)行該符號(hào)右邊的運(yùn)算。⑥||(先決或)邏輯運(yùn)算符是當(dāng)運(yùn)算符的左邊為1(真)時(shí),就不需要繼續(xù)執(zhí)行該符號(hào)右邊的運(yùn)算,而立即得出該邏輯運(yùn)算結(jié)果為1(真);否則,就要繼續(xù)執(zhí)行該符號(hào)右邊的運(yùn)算。例如,使用先決邏輯操作符進(jìn)行邏輯運(yùn)算:>>a=0;b=5;c=10;>>(a~=0)&&(b<c)ans=0>>(a~=0)||(b<c)ans=1矩陣和數(shù)組運(yùn)算

【例2.15】

數(shù)組的關(guān)系和邏輯運(yùn)算實(shí)現(xiàn)半波整流。>>t=linspace(0,3*pi,10);>>y=sin(t) %計(jì)算正弦曲線y=

列1至700.86600.86600.0000-0.8660-0.8660-0.0000

列8至100.86600.86600.0000>>t1=(t<pi)|(t>2*pi)t1=1×10logical

數(shù)組1110000111>>y1=t1.*y %得出0~π和2~3π的半波整流y1=

列1至700.86600.86600000

列8至100.86600.86600.0000矩陣和數(shù)組運(yùn)算

在工作區(qū)窗口選擇變量y1,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“plot(y1)”命令,可查看半波整流曲線y1的波形如圖。矩陣和數(shù)組運(yùn)算

(3)函數(shù)運(yùn)算在MATLAB中能得出真(1)和假(0)結(jié)果的函數(shù)有關(guān)系邏輯函數(shù)、工作狀態(tài)判斷函數(shù)、特殊數(shù)據(jù)判斷函數(shù)和數(shù)據(jù)類(lèi)型函數(shù)。常用的關(guān)系邏輯函數(shù)如表。函

數(shù)

名功

能例

子輸

入結(jié)

果all(A)判斷A的列向量元素是否全非0,全非0則為1all(a)01any(A)判斷A的列向量元素中是否有非0元素,有則為1any(a)11isequal(A,B)判斷A、B對(duì)應(yīng)元素是否全相等,相等為1isequal(a,b)0isempty(A)判斷A是否為空矩陣,為空則為1,否則為0isempty(a)0isfinite(A)判斷A的各元素值是否有限,是則為1isfinite(a)1011isnumeric(A)判斷數(shù)組A的元素是否全為數(shù)值型數(shù)組isnumeric(a)1isinf(A)判斷A的各元素值是否無(wú)窮大,是則為1isinf(a)0100isnan(A)判斷A的各元素值是否為NAN,是則為1isnan(a)0000isreal(A)判斷數(shù)組A的元素是否全為實(shí)數(shù),是則為1isreal(a)1isprime(A)判斷A的各元素值是否為素?cái)?shù),是則為1isprime(b)0000isspace(A)判斷A的各元素值是否為空格,是則為1isspace(a)0000find(A)尋找A數(shù)組非0元素的下標(biāo)和值find(b)14矩陣和數(shù)組運(yùn)算

例如,使用函數(shù)進(jìn)行變量A和B的邏輯運(yùn)算,其中:

【例2.16】

用邏輯函數(shù)運(yùn)算取出1~100中的素?cái)?shù)。>>x=1:100;>>f=isprime(x);>>y2=x(f)y2=

列1至12 23571113171923293137

列13至24 414347535961677173798389

列25 97矩陣和數(shù)組運(yùn)算

6.運(yùn)算符優(yōu)先級(jí)在MATLAB中,各種運(yùn)算符的優(yōu)先級(jí)如下:'(矩陣轉(zhuǎn)置)、^(矩陣冪)和.'(數(shù)組轉(zhuǎn)置)、.^(數(shù)組冪)→~(邏輯非)→*(乘)、/(左除)、\(右除)和.*(點(diǎn)乘)、./(點(diǎn)左除)、.\(點(diǎn)右除)→+、

(加減)→:(冒號(hào))→<、<=、>、>=、~=→&(邏輯與)→|(邏輯或)→&&(先決與)→||(先決或)05多維數(shù)組

多維數(shù)組的創(chuàng)建多維數(shù)組的標(biāo)識(shí)多維數(shù)組

1.多維數(shù)組的創(chuàng)建創(chuàng)建多維數(shù)組的方法與創(chuàng)建矩陣的方法相似,最常用的有以下幾種。(1)通過(guò)“全下標(biāo)”元素賦值方式創(chuàng)建【例2.17_1】

用“全下標(biāo)”元素賦值方式創(chuàng)建多維數(shù)組。>>a(:,:,2)=[12;34] %創(chuàng)建三維數(shù)組a(:,:,1)=0000a(:,:,2)=1234>>b=[11;22] %先創(chuàng)建二維數(shù)組b=1122>>b(:,:,2)=5 %擴(kuò)展數(shù)組b(:,:,1)=1122b(:,:,2)=5555多維數(shù)組

(2)由函數(shù)ones、zeros、rand和randn直接創(chuàng)建【例2.17_2】

用函數(shù)rand直接創(chuàng)建三維隨機(jī)數(shù)組。>>rand(2,4,3)ans(:,:,1)=0.02740.82760.16820.13010.96010.49170.97610.2748ans(:,:,2)=0.14790.54720.10070.38460.38080.92980.94940.2671ans(:,:,3)=0.57810.69930.78380.69350.59190.11700.97280.3387多維數(shù)組

(3)利用函數(shù)生成數(shù)組①將一系列數(shù)組沿著特定的維連接成1個(gè)多維數(shù)組。語(yǔ)法:

Cat(維,p1,p2,…)說(shuō)明:第1個(gè)參數(shù)“維”是指沿著第幾維連接數(shù)組p1、p2等。②按指定行列數(shù)放置模塊數(shù)組生成多維數(shù)組。語(yǔ)法:repmat(p)repmat(p,行列頁(yè)…)說(shuō)明:第1個(gè)輸入變量p是用來(lái)放置的模塊數(shù)組,后面的變量要放在指定的各維。③在總元素的數(shù)目不變的前提下重新確定數(shù)組的行列數(shù)來(lái)重組數(shù)組。語(yǔ)法:reshape(p)reshape(p,行列頁(yè)…)【例2.18】

用函數(shù)生成多維數(shù)組。多維數(shù)組

2.多維數(shù)組的標(biāo)識(shí)為了能夠更好地對(duì)多維數(shù)組進(jìn)行操作,MATLAB提供了對(duì)多維數(shù)組進(jìn)行標(biāo)識(shí)的函數(shù)。(1)直接給出數(shù)組的維數(shù)語(yǔ)法:ndims(p)(2)給出數(shù)組各維的大小語(yǔ)法:[m,n,…]=size(p) %得出各維的大小m=size(p,x) %得出某一維的大小說(shuō)明:p為需要得出大小的多維數(shù)組;m為行數(shù),n為列數(shù)…;當(dāng)只有1個(gè)輸出變量時(shí),x=1返回第1維(行數(shù)),x=2返回第2維(列數(shù)),依此類(lèi)推。多維數(shù)組

(3)返回行數(shù)或列數(shù)的最大值語(yǔ)法:length(p)說(shuō)明:length(p)等價(jià)于max(size(p))?!纠?.19】

獲取矩陣的大小參數(shù)。>>a=[12;34;56]a=123456>>ndims(a) %得出維數(shù)ans=2>>size(a) %得出各維的大小ans=32>>size(a,2) %得出列的大小ans=2>>length(a) %得出最大維的大小ans=3第2章MATLAB數(shù)值計(jì)算——日期和時(shí)間01日期和時(shí)間的表示格式

日期格式日期格式轉(zhuǎn)換日期和時(shí)間的表示格式

1.日期格式(1)日期字符串。日期字符串是最常用的,有多種輸出格式。例如,“2024年1月1日”可以表示為'01-Jan-2024'、'01/01/2024'等。(2)連續(xù)的日期數(shù)值。連續(xù)的日期數(shù)值是以公元元年1月1日開(kāi)始的,日期數(shù)值表示當(dāng)前時(shí)間與起點(diǎn)的時(shí)間距離。例如,“2028年1月1日”可以表示為740713,即為2028年1月1日與公元元年1月1日的間隔天數(shù)。(3)日期向量。日期向量格式用一個(gè)包括6個(gè)數(shù)字的數(shù)組表示日期時(shí)間,其元素順序依次為[yearmonthdayhourminutesecond],日期向量格式一般不用于運(yùn)算中,是MATLAB的某些內(nèi)部函數(shù)的返回和輸入?yún)?shù)。日期和時(shí)間的表示格式

2.日期格式轉(zhuǎn)換MATLAB提供了函數(shù)datestr、datenum和datevec,用于各種日期格式的轉(zhuǎn)換。(1)datestr:將日期格式轉(zhuǎn)換為日期字符串格式;(2)datenum:將日期格式轉(zhuǎn)換為連續(xù)的日期數(shù)值格式;(3)datevec:將日期格式轉(zhuǎn)換為連續(xù)的日期向量格式?!纠?.20_1】

日期格式的轉(zhuǎn)換。>>d=datenum('01/01/2028') %連續(xù)的日期數(shù)值格式d=740713>>s=datestr(d) %日期字符串格式s='01-Jan-2028'>>v=datevec(d) %日期向量格式v=2028 1 1 0 0 002日期和時(shí)間函數(shù)獲取系統(tǒng)時(shí)間日期和時(shí)間的顯示格式計(jì)時(shí)函數(shù)日期和時(shí)間函數(shù)1.獲取系統(tǒng)時(shí)間MATLAB中獲取當(dāng)前系統(tǒng)時(shí)間的函數(shù)有date、now和clock?!纠?.20_2】

獲取當(dāng)前系統(tǒng)時(shí)間。>>date %按照日期字符串格式獲取當(dāng)前系統(tǒng)時(shí)間ans='19-May-2023'>>clock %按照日期向量格式獲取當(dāng)前系統(tǒng)時(shí)間ans=1.0e+03*2.02300.00500.01900.00800.02700.0519>>now %按照連續(xù)的日期數(shù)值格式獲取當(dāng)前系統(tǒng)時(shí)間ans=7.3903e+052.日期和時(shí)間的顯示格式可以使用datestr函數(shù)將日期和時(shí)間顯示為字符串的樣式。語(yǔ)法:datestr(d,f) %將日期按指定格式顯示說(shuō)明:d為日期字符串格式或連續(xù)日期數(shù)值格式的日期數(shù)值;f為指定的格式,可以是數(shù)值也可以是字符串,如'dd-mm-yyyy'、'mm/dd/yy'和'dd-mm-yyyyHH:MM:SS'等。日期和時(shí)間函數(shù)3.計(jì)時(shí)函數(shù)在程序的運(yùn)行過(guò)程中,如果需要知道代碼運(yùn)行的實(shí)際時(shí)間,可以使用計(jì)時(shí)函數(shù)。MATLAB提供了cputime、tic/toc和etime三種方法實(shí)現(xiàn)計(jì)時(shí)。(1)cputime方法cputime返回自MATLAB啟動(dòng)以來(lái)的CPU時(shí)間:程序執(zhí)行的時(shí)間=程序代碼執(zhí)行結(jié)束后的cputime-在程序代碼執(zhí)行前的cputime(2)tic/toc方法tic在程序代碼開(kāi)始用于啟動(dòng)一個(gè)計(jì)時(shí)器;toc放在程序代碼的最后,用于終止計(jì)時(shí)器的運(yùn)行,返回的計(jì)時(shí)時(shí)間就是程序運(yùn)行時(shí)間。(3)etime方法etime方法使用etime函數(shù)獲得程序運(yùn)行時(shí)間。語(yǔ)法:etime(t1,t0) %返回t1-t0的值說(shuō)明:t0為開(kāi)始時(shí)間,t1為終止時(shí)間,獲取t1和t0之間的秒數(shù)。例如,t0和t1可以使用clock函數(shù)獲得,在程序中使用如下命令:>>t0=clock;…… %程序段>>t1=clock;>>t=etime(t1,t0) %t為程序運(yùn)行時(shí)間第2章MATLAB數(shù)值計(jì)算——稀疏矩陣01稀疏矩陣的建立

使用sparse函數(shù)產(chǎn)生稀疏矩陣用spdiags函數(shù)創(chuàng)建稀疏矩陣稀疏矩陣的建立

1.使用sparse函數(shù)產(chǎn)生稀疏矩陣sparse函數(shù)用于創(chuàng)建稀疏矩陣,或?qū)?個(gè)全元素矩陣直接轉(zhuǎn)換成稀疏矩陣。語(yǔ)法:sparse(i,j,s,m,n) %直接創(chuàng)建稀疏矩陣

sparse(P) %由全元素矩陣P轉(zhuǎn)換為稀疏矩陣說(shuō)明:i、j是非0元素的行、列下標(biāo);s是非0元素所形成的向量;m、n是s的行、列維數(shù),可省略;i、j、s都是長(zhǎng)度相同的向量,生成矩陣的元素s(k)下標(biāo)分別是i(k)和j(k);P為全元素矩陣。稀疏矩陣的建立

【例2.21_1】

產(chǎn)生稀疏矩陣。>>a=eye(3);>>a(4,:)=[-5-2-3]a=100010001-5-2-3>>b=sparse(a) %創(chuàng)建稀疏矩陣b=(1,1)1(4,1)-5(2,2)1(4,2)-2(3,3)1(4,3)-3>>c=sparse([142434],[112233],[1-51-21-3]); %創(chuàng)建與b相同的稀疏矩陣說(shuō)明:sparse的前兩個(gè)參數(shù)向量分別表示稀疏矩陣元素的行和列下標(biāo),第一個(gè)元素的下標(biāo)是(1,1),第三個(gè)參數(shù)向量是稀疏矩陣元素,第一個(gè)元素為1。與sparse函數(shù)相反,full函數(shù)可將稀疏矩陣轉(zhuǎn)變?yōu)槿鼐仃?。語(yǔ)法:full(P) %將稀疏矩陣P轉(zhuǎn)變?yōu)槿鼐仃囅∈杈仃嚨慕?/p>

2.用spdiags函數(shù)創(chuàng)建稀疏矩陣spdiags函數(shù)用對(duì)角線元素構(gòu)建1個(gè)稀疏矩陣。語(yǔ)法:spdiags(D,k,m,n)說(shuō)明:矩陣D的每一列代表矩陣的對(duì)角線向量;k代表對(duì)角線的位置(0代表主對(duì)角線,

1代表向下位移一單位的次對(duì)角線,1代表向上位移一單位的次對(duì)角線,依此類(lèi)推);m、n分別代表矩陣的行、列維數(shù)。稀疏矩陣的建立

【例2.21_2】

用spdiags函數(shù)創(chuàng)建稀疏矩陣。>>D=[329;249;114]D=329249114>>d=[012];>>s=spdiags(D,d,4,3) %構(gòu)成4行3列的稀疏矩陣s=(1,1)3(1,2)4(2,2)2(1,3)4(2,3)1(3,3)1>>full(s) %轉(zhuǎn)換成全元素矩陣ans=34402100100002稀疏矩陣的存儲(chǔ)空間

稀疏矩陣的存儲(chǔ)空間

可以使用“whos”命令比較【例2.21】矩陣a和b所占用的內(nèi)存大小。>>whosNameSizeByteClassa 4

396doublearrayb 4

388sparsearrayGrandtotalis18elementsusing184Byte可以看出,稀疏矩陣b占用的內(nèi)存為88字節(jié),比全元素矩陣a占用的96字節(jié)少。如果稀疏矩陣b含非0元素更少,則占用內(nèi)存字節(jié)數(shù)更少。對(duì)于1個(gè)只包含實(shí)數(shù)m

n的稀疏矩陣,含有nnz個(gè)非零元素,MATLAB使用3個(gè)內(nèi)部數(shù)組儲(chǔ)存此稀疏矩陣的信息。(1)第1個(gè)數(shù)組:以double方式儲(chǔ)存nnz個(gè)非零元素,使用的空間為8

nnz(Byte)。(2)第2個(gè)數(shù)組:以整數(shù)方式儲(chǔ)存nnz個(gè)非零元素,每個(gè)元素的行下標(biāo)使用的空間為4

nnz(Byte)。(3)第3個(gè)數(shù)組:以整數(shù)方式儲(chǔ)存n個(gè)列的起始指針,使用的空間為4

n(Byte)。(4)如果是復(fù)數(shù)稀疏矩陣,則需要第4個(gè)數(shù)組,以double方式儲(chǔ)存nnz個(gè)非零元素的虛數(shù)部分。稀疏矩陣的存儲(chǔ)空間

MATLAB提供了如下幾個(gè)返回稀疏矩陣元素個(gè)數(shù)的函數(shù):①nnz:可返回稀疏矩陣的非零元素個(gè)數(shù)。②nonzeros:返回1個(gè)包含所有非零元素的列向量。③nzmax:返回最大的非零元素個(gè)數(shù),當(dāng)nnz>nzmax時(shí),MATLAB會(huì)動(dòng)態(tài)調(diào)整以便給nzmax增加內(nèi)存,用于儲(chǔ)存新增的非零元素?!纠?.21_3】

查看稀疏矩陣的非零元素。>>nnz(b) %得出非零元素個(gè)數(shù)ans=6>>nonzeros(b) %得出非零元素ans=1-51-21-3>>nzmax(b)ans=603稀疏矩陣的運(yùn)算

稀疏矩陣的運(yùn)算

MATLAB適用于針對(duì)全元素矩陣設(shè)計(jì)的運(yùn)算與函數(shù),也都適用于稀疏矩陣的運(yùn)算。稀疏矩陣的標(biāo)準(zhǔn)數(shù)學(xué)運(yùn)算按照以下原則進(jìn)行:(1)如果函數(shù)的輸入?yún)?shù)是向量或標(biāo)量,輸出的參數(shù)為矩陣,則輸出參數(shù)為全元素矩陣。(2)如果函數(shù)的輸入?yún)?shù)是矩陣,輸出的參數(shù)也為矩陣,則輸出參數(shù)以輸入矩陣的方式表示,即當(dāng)輸入?yún)?shù)為稀疏矩陣時(shí),輸出參數(shù)也是稀疏矩陣。(3)如果二元運(yùn)算的兩個(gè)操作數(shù)中一個(gè)是全元素矩陣,另一個(gè)是稀疏矩陣,則對(duì)于“+”“

”“*”“\”的運(yùn)算結(jié)果為全元素矩陣,而“&”“.*”的運(yùn)算結(jié)果為稀疏矩陣。(4)用cat函數(shù)或“[]”連接混合矩陣將產(chǎn)生稀疏矩陣。第2章MATLAB數(shù)值計(jì)算——多

項(xiàng)

式01多項(xiàng)式的求值、求根和部分分式展開(kāi)

多項(xiàng)式求值多項(xiàng)式求根特征多項(xiàng)式部分分式展開(kāi)多項(xiàng)式的求值、求根和部分分式展開(kāi)

1.多項(xiàng)式求值函數(shù)polyval可以用來(lái)計(jì)算多項(xiàng)式在給定變量時(shí)的值,是按數(shù)組運(yùn)算規(guī)則進(jìn)行計(jì)算的。語(yǔ)法:polyval(p,s)說(shuō)明:p為多項(xiàng)式,s為給定矩陣?!纠?.22_1】計(jì)算p(x)=x3+21x2+20x多項(xiàng)式的值。>>p1=[121200];>>polyval(p1,2) %計(jì)算x=2時(shí)多項(xiàng)式的值ans=132>>x=0:0.5:3;>>polyval(p1,x) %計(jì)算x為向量時(shí)多項(xiàng)式的值ans=015.375042.000080.6250132.0000196.8750276.0000多項(xiàng)式的求值、求根和部分分式展開(kāi)

2.多項(xiàng)式求根多項(xiàng)式求根的方法如下。(1)roots用來(lái)計(jì)算多項(xiàng)式的根。語(yǔ)法:r=roots(p)說(shuō)明:p為多項(xiàng)式;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論