




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
MATLAB基礎(chǔ)及應(yīng)用曹敦虔編著第2章矩陣生成與運算本章學(xué)習(xí)重點掌握內(nèi)容:MATLAB基本數(shù)據(jù)類型數(shù)組生成與訪問數(shù)組元素數(shù)組變形數(shù)組運算與矩陣運算第2章矩陣生成與運算2.1
數(shù)據(jù)類型2.2數(shù)組生成2.3
訪問數(shù)組元素2.4
數(shù)組變形2.5
數(shù)組運算2.6
矩陣運算2.1數(shù)據(jù)類型數(shù)組(array)邏輯(logical)字符(char)數(shù)值(numeric)uint8、int8、int16、uint16、int32、uint32、int64、uint64雙精度(double)單精度(single)復(fù)數(shù)型(complex)元胞(cell)結(jié)構(gòu)體(stucture)表(table)函數(shù)句柄(functionhandle)MATLAB數(shù)據(jù)類型2.1數(shù)據(jù)類型1.整型整型又可細(xì)分為int8、int16、int32、int64、uint8、uint16、uint32、uint64共8種,前4種為有符號整型,后4種為無符號整型.示例:a=int8(12);b=int8(9);c=a+bc=212.1數(shù)據(jù)類型2.浮點型浮點型有單精度浮點型(single)和雙精度浮點型(double)兩種,其中double是MATLAB的默認(rèn)數(shù)據(jù)類型.示例:a=single(2.5);
%a是單精度浮點數(shù)b=3.1;
%b是雙精度浮點數(shù)c=b/a
%c是單精度浮點數(shù)c=1.24002.1數(shù)據(jù)類型3.復(fù)數(shù)型MATLAB可以直接進(jìn)行復(fù)數(shù)運算,使用未賦值的i或j表示虛數(shù)單位.
示例:a=1+2i;b=3+4i;c=a*bc=-5.0000+10.0000i2.1數(shù)據(jù)類型4.邏輯型邏輯型數(shù)據(jù)的取值只有兩種true和false,在顯示時為1和0,通常用來表示真/假、是/否、對/錯、成立/不成立等.示例:A=logical([0123])A=0111sum(A)ans=32.1數(shù)據(jù)類型5.字符型在MATLAB中使用單引號對來表示字符型數(shù)據(jù),1×n的字符型數(shù)組稱為字符串.多個字符串可以使用多行數(shù)組來表示,但是各個字符串長度必須相同.
示例:a='Hello'%a是一個字符串,也是一個1×5的字符型數(shù)組a=HelloA=['abcd';'1234']A=abcd12342.1數(shù)據(jù)類型6.單元單元也稱細(xì)胞或元胞,它可以容納任何類型的數(shù)據(jù),包括數(shù)組、結(jié)構(gòu)、單元數(shù)組,對于存儲復(fù)雜數(shù)據(jù)非常有用.示例:a='Hello'%a是一個字符串,也是一個1×5的字符型數(shù)組a=HelloA=['abcd';'1234']A=abcd12342.1數(shù)據(jù)類型6.單元單元也稱細(xì)胞或元胞,它可以容納任何類型的數(shù)據(jù),包括數(shù)組、結(jié)構(gòu)、單元數(shù)組,對于存儲復(fù)雜數(shù)據(jù)非常有用.示例:a='Hello'%a是一個字符串,也是一個1×5的字符型數(shù)組a=HelloA=['abcd';'1234']A=abcd12342.1數(shù)據(jù)類型6.單元取出單元數(shù)組元素有兩種用法,一種是使用大括號{},取出的結(jié)果是單元內(nèi)所裝的數(shù)據(jù),另一種是使用小括號(),取出的是單元本身.示例:A={[1,2],[3,4],[5],[6,7],[8],[9,10,11]};B=A{1};%取出第一個單元內(nèi)的數(shù)據(jù),結(jié)果是[1,2]C=A(1);%取出第一個單元,結(jié)果是{[1,2]}2.1數(shù)據(jù)類型7.結(jié)構(gòu)體結(jié)構(gòu)體是由若干個成員組成的一個整體,
每個成員包含成員名和值.生成結(jié)構(gòu)體對象的方法有多種.示例:student1.Name='Weixiaobao';student1.Age=20;student1.Email='wxb2138721@163.com';student1student1=Name:'Weixiaobao'Age:20Email:'wxb2138721@163.com'student2=struct('Name','Liwei','Age',21,'Email','Liwei321809@126.com')student2=Name:'Liwei'Age:21Email:'Liwei321809@126.com'2.1數(shù)據(jù)類型8.函數(shù)句柄函數(shù)句柄可以標(biāo)識一個函數(shù),可以通過函數(shù)句柄來調(diào)用函數(shù).獲取函數(shù)句柄的方法有:1)變量名=@函數(shù)名;2)變量名=str2func('函數(shù)名');3)變量名=@(輸入?yún)?shù)列表)函數(shù)表達(dá)式.2.1數(shù)據(jù)類型8.函數(shù)句柄
示例:f=@sin;
%獲取sin函數(shù)的句柄f(pi/2)ans=1f=str2func('cos');
%獲取cos函數(shù)的句柄f(pi)ans=-1f=@(x)sin(x)./x;
%定義一個匿名函數(shù)f(0.001)ans=1.00002.1數(shù)據(jù)類型9.表格表格是一種復(fù)雜的數(shù)據(jù)類型,可以處理包含表頭、行、列的數(shù)據(jù),與普通數(shù)組不同的是表格中不同列的數(shù)據(jù)類型可以不同,但是比單元數(shù)組又更加規(guī)范.表格由若干行向變量和若干列向變量組成.2.1數(shù)據(jù)類型9.表格學(xué)號姓名入學(xué)年份專業(yè)成績11253020123趙曉燕2002數(shù)學(xué)與應(yīng)用數(shù)學(xué)8511253020124葉超2002信息與計算科學(xué)7811253130111苗苗2013物理學(xué)9111253140227趙懷安2014計算機科學(xué)與技術(shù)86studentID=[10223;10224;11311;11427];studentName=['趙曉燕';'葉超';'苗苗';'趙懷安'];%注意使用空格補齊startYear=[2002;2002;2013;2014];major=[2002;2002;2013;2014];score=[85;78;91;86];T=table(studentID,studentName,startYear,major,score)%生成表格2.2數(shù)組生成2.2.1一般數(shù)組生成如果知道數(shù)組的所有元素,可以通過羅列元素的方法生成數(shù)組.同一行之間的元素用空格或逗號分隔,行與行之間用分號分隔.示例:A=[6,3,5,1,2]%生成一行A=63512B=[8;2;4;7;5]%生成一列B=82475C=[123;456;789]%生成一個3×3矩陣C=1234567892.2數(shù)組生成
2.2數(shù)組生成A=zeros(3,3)
%3階零矩陣A=000000000B=ones(3,3)
%3階1矩陣B=111111111C=eye(3)
%3階單位陣C=100010001F=inf(3,3)
%3階無窮大矩陣F=InfInfInfInfInfInfInfInfInf2.2數(shù)組生成D=true(3,3)%3階真矩陣D=111111111E=false(3,3)%3階假矩陣E=000000000G=rand(3,3)%3階隨機矩陣G=0.81470.91340.27850.90580.63240.54690.12700.09750.9575H=magic(4)%4階魔方陣H=162313511108976124141512.2數(shù)組生成V=diag(H)%獲取矩陣H的主對角元素,構(gòu)成一個列向量V=161161X=1:8X=12345678Y=linspace(-3,3,7)%將區(qū)間[-3,3]均勻剖分為6份,生成7個分點Y=-3-2
-10123A=floor(2*rand(3,3))%生成一個3×3的數(shù)組,每個元素是0或1的隨機整數(shù)A=1010000112.2數(shù)組生成2.2.3稀疏矩陣當(dāng)大型矩陣中只包含少量非零元素時,使用稀疏矩陣來存儲可節(jié)約大量空間.相對于稀疏矩陣,普通矩陣稱為滿矩陣.可以將所有MATLAB內(nèi)置算術(shù)運算、邏輯運算和索引運算應(yīng)用于稀疏矩陣,或應(yīng)用于稀疏矩陣和滿矩陣兩者.對稀疏矩陣執(zhí)行的運算返回稀疏矩陣,對滿矩陣執(zhí)行的運算返回滿矩陣.2.2數(shù)組生成創(chuàng)建稀疏矩陣的方法有:spalloc:為稀疏矩陣分配空間spdiags:提取非零對角線并創(chuàng)建稀疏帶狀對角矩陣speye:稀疏單位矩陣sprand:稀疏均勻分布隨機矩陣sprandn:稀疏正態(tài)分布隨機矩陣sprandsym:稀疏對稱隨機矩陣sparse:創(chuàng)建稀疏矩陣2.2數(shù)組生成常用的稀疏矩陣操作函數(shù)有:issparse:確定輸入是否為稀疏矩陣nnz:非零矩陣元素的數(shù)目nonzeros:非零矩陣元素nzmax:為非零矩陣元素分配的存儲量spfun:將函數(shù)應(yīng)用于非零稀疏矩陣元素spones:將非零稀疏矩陣元素替換為1spparms:為稀疏矩陣?yán)淘O(shè)置參數(shù)spy:可視化矩陣的稀疏模式find:查找非零元素的索引和值full:將稀疏矩陣轉(zhuǎn)換為滿存儲2.2數(shù)組生成S=spalloc(1000,1000,50);
%創(chuàng)建1000×1000稀疏矩陣,使之具有50個非零值的空間I=speye(1000);%創(chuàng)建稀疏單位方陣S=sparse(1000,2000);
%生成零稀疏矩陣S=sparse(A);%將滿矩陣轉(zhuǎn)換為稀疏矩陣
A=sprand(1000,1000,0.0001);n=nnz(A);
%非零項個數(shù)spy(A);
%可視化矩陣的稀疏模式2.2數(shù)組生成2.2.4符號矩陣MATLAB支持符號運算,可以進(jìn)行公式推導(dǎo)、微積分運算、方程求解等運算.在進(jìn)行符號運算前,首先要定義符號變量或符號矩陣.定義單個符號變量或符號矩陣使用sym命令,定義多個符號變量使用syms命令.x=sym('x');%定義符號變量y=3*x^2;dy=diff(y,x)%求導(dǎo)F=int(y,x)%求不定積分symsabc;%定義多個符號變量z=a*x^2+b*x+c;solve(z,x)%求方程的解A=sym('[a,2*b;3*c,0]');%定義符號矩陣det(A)%計算行列式的值inv(A)%計算符號矩陣的逆2.3訪問數(shù)組元素MATLAB可以訪問單個數(shù)組元素,也可以批量訪問數(shù)組元素.一維數(shù)組V的第i個元素:V(i)二維數(shù)組A的第i行第j列元素:A(i,j)二維數(shù)組A的第i行:A(i,:),結(jié)果為一行向量二維數(shù)組A的第j列:A(:,j),結(jié)果為一列向量子矩陣:A(i1:i2,j1:j2),
矩陣A的第i1行到i2行與第j1列到j(luò)2列交叉位置的所有元素2.3訪問數(shù)組元素A=[123;456;789];A(1,3)ans=3A(2,:)%獲取第2行ans=456A(:,3)%獲取第3列ans=369A(1:2,2:3)%獲取1-2行、2-3列元素組成的子矩陣ans=2356A(2:end,:)
%獲取從第2行到最后一行的所有元素組成的子矩陣ans=4567892.3訪問數(shù)組元素更一般地,數(shù)組下標(biāo)可以是任意的整數(shù)數(shù)組,只要下標(biāo)不越界即可.獲取指定行、列交叉位置元素組成的數(shù)組:A(U,V).如果U,V是兩個整數(shù)向量,U=[u1,u2,?,um],V=[v1,v2,?,vn],則依次取出A的第u1,u2,?,um行與第v1,v2,?,vn列交叉位置的所有元素.2.3訪問數(shù)組元素A([12],[31])%取出矩陣A的第1、2行第3、1列的元素組成一個矩陣ans=3164A([11],:)%取出矩陣A的第1行兩次組成一個矩陣ans=123123A(:,ones(1,5))%取出矩陣A的第1列5次組成一個矩陣ans=111114444477777A(1:2:end,2:2:end)%取出矩陣A的奇數(shù)行偶數(shù)列組成一個矩陣ans=2
82.3訪問數(shù)組元素MATLAB還可以使用邏輯數(shù)組作為下標(biāo),表示取出邏輯數(shù)組中元素為真的位置對應(yīng)的原數(shù)組元素,構(gòu)成一個列向量.要求邏輯數(shù)組與原數(shù)組同維.示例:B=A>5%B與A是同維邏輯矩陣,A的元素大于5的位置為真,其它為假B=000001111A(B)%取出A中所有大于5的元素,構(gòu)成一個列向量.與A(A>5)結(jié)果相同ans=786
92.4數(shù)組變形改變數(shù)組的維數(shù),提取數(shù)組的行、列,刪除行、列,合并數(shù)組等操作統(tǒng)稱為數(shù)組變形.矩陣轉(zhuǎn)置:A.'或A'.若A是實矩陣,則A.'與A'同為轉(zhuǎn)置;若A是復(fù)數(shù)矩陣,則A.'為轉(zhuǎn)置,A'為共軛轉(zhuǎn)置矩陣合并:C=[A,B]或C=[AB](橫向),C=[A;B](縱向).矩陣重復(fù):B=repmat(A,s,t)
.
由矩陣A橫向重復(fù)s次,縱向重復(fù)t次的一個大矩陣2.4數(shù)組變形刪除行或列:A(i,:)=[](刪除第i行),A(:,j)=[](刪除第j列).若i或j是向量,則可刪除多行或多列。矩陣翻轉(zhuǎn):B=A(:,end:?1:1)或B=fliplr(A)(橫向翻轉(zhuǎn)),B=A(end:?1:1,:)或B=flipud(A)
(縱向翻轉(zhuǎn)),B=flipdim(A,dim)(按指定維數(shù)翻轉(zhuǎn))。旋轉(zhuǎn)矩陣:B=rot90(A,k),將矩陣逆時針旋轉(zhuǎn)k×90°,其中k=±1,±2,?維數(shù)重置:B=reshape(A,[st]),改變矩陣的行數(shù)和列數(shù),s×t等于A的元素個數(shù)。如果希望變成一列,可以使用B=A(:).2.4數(shù)組變形A=[123;456;789];B=[100;010;001];H=A(:);%將數(shù)組A的所有元素排成一列H'
%將列向量轉(zhuǎn)置成行向量ans=147258369C=[A,B]%橫向合并兩個矩陣C=123100456010789001D=[A;B]%縱向合并兩個矩陣D=1234567891000100012.4數(shù)組變形C(1,:)=[]%刪除第一行C=456010789001D(:,end)=[]%刪除最后一列D=124578100100fliplr(B)%將B橫向翻轉(zhuǎn)ans=001010100rot90(A,1)%將A逆時針旋轉(zhuǎn)90度ans=3692581472.4數(shù)組變形reshape(C,[34])%將C重新排列成3×4矩陣ans=480076005911B=repmat(A,1,2)%將A橫向復(fù)制1遍,縱向復(fù)制2遍B=1231234564567897892.4數(shù)組變形MATLAB可以使用size、length、numel、ndims等函數(shù)獲取數(shù)組的維數(shù)相關(guān)信息.[m,n]=size(A);
%m為行數(shù),n為列數(shù)m=size(A,1);
%獲取行數(shù)n=size(A,2);
%獲取列數(shù)n=length(V);
%獲取向量長度n=ndims(A);
%獲取維數(shù)n=numel(A);%獲取元素個數(shù)2.5數(shù)組運算數(shù)組運算是指對數(shù)組元素進(jìn)行的運算,可以看成是一種批量數(shù)據(jù)處理.對于二元運算符,要求參與運算的兩個數(shù)組是同維數(shù)組,或其中一個是標(biāo)量,另一個是數(shù)組.如果兩個是同維數(shù)組,則將對應(yīng)的元素進(jìn)行運算;如果其中一個是標(biāo)量,另一個是數(shù)組,則該標(biāo)量與數(shù)組的每一個元素進(jìn)行運算.MATLAB數(shù)組運算有算術(shù)運算、賦值運算、關(guān)系運算、邏輯運算、位運算、集合運算及數(shù)學(xué)函數(shù)運算等.2.5數(shù)組運算2.5.1算術(shù)運算數(shù)組算術(shù)運算有加(+)、減(?)、乘(.*)、除(./)、左除(.\)及乘方(.^),其基本運算規(guī)則是對數(shù)組中的元素作相應(yīng)的算術(shù)運算.語法規(guī)則如下:加法:A+B減法:A?B乘法:A.*B除法:A./B左除法A.\B乘方:A.^n2.5數(shù)組運算2.5.2賦值運算MATLAB可以對數(shù)組整體賦值,也可以對數(shù)組局部賦值,還可以利用賦值運算符實現(xiàn)一些特殊的操作.A=rand(3)%生成3×3隨機數(shù)組,并賦值給AA=0.01800.56530.03230.81660.47670.68750.33450.76000.9762A(1,:)=rand(1,3)%生成1×3隨機數(shù)組,并賦值給A的第一行A=0.50450.73680.53520.81660.47670.68750.33450.76000.97622.5數(shù)組運算2.5.2賦值運算A([1,2],:)=A([2,1],:)%交換A的第1行和第2行A=0.81660.47670.68750.50450.73680.53520.33450.76000.9762A(:,2)=[]
%刪除A的第2列A=0.81660.68750.50450.53520.33450.97622.5數(shù)組運算2.5.3關(guān)系運算關(guān)系運算符有6個:<
<=
>
>=
==
~=用于比較兩個數(shù)的大小關(guān)系,運算結(jié)果是邏輯值.如果運算數(shù)中有一個是數(shù)組,則結(jié)果是一個同維的邏輯數(shù)組.2.5數(shù)組運算2.5.3關(guān)系運算A=rand(3)%生成3×3隨機數(shù)組A=0.37410.48440.08850.78910.06380.72790.17860.43220.1700B=rand(3)B=0.90450.78930.73340.29890.05880.36020.15890.48390.8257C=A>B%兩個同維數(shù)組進(jìn)行比較
C=000111100D=A>0.5%數(shù)組與標(biāo)量進(jìn)行比較D=0001010002.5數(shù)組運算2.5.4邏輯運算邏輯運算要求運算數(shù)是邏輯值,運算結(jié)果也是邏輯值.如果運算數(shù)不是邏輯值,則會自動轉(zhuǎn)換成邏輯值再進(jìn)行運算.邏輯運算規(guī)則如表下:邏輯運算有數(shù)組邏輯運算和標(biāo)量邏輯運算兩類.aba&ba|bxor(a,b)~a0000010101111111002.5數(shù)組運算1.數(shù)組邏輯運算數(shù)組邏輯運算的運算數(shù)是數(shù)組,如果其中一個數(shù)組,另一個是標(biāo)量,則數(shù)組中的每一個元素與標(biāo)量進(jìn)行邏輯運算,結(jié)果是一個邏輯數(shù)組.邏輯與:A&B
邏輯或:A|B
邏輯異或:xor(A,B)邏輯非:~A2.5數(shù)組運算1.數(shù)組邏輯運算A=rand(1,4)<0.5%生成隨機0-1向量A=1100B=rand(1,4)<0.5%生成隨機0-1向量B=1010C=A&B%邏輯與運算C=1000C=A|B%邏輯或運算C=1110C=xor(A,B)%邏輯異或運算C=0110~A%邏輯非運算ans=
00112.5數(shù)組運算2.標(biāo)量邏輯運算標(biāo)量邏輯運算的運算數(shù)只能是標(biāo)量,運算結(jié)果是邏輯型標(biāo)量.標(biāo)量邏輯運算常用在if語句和while語句的條件表達(dá)式中.邏輯與:a&&b邏輯或:a||b值得注意的是標(biāo)量邏輯運算具有“短路”特性.即當(dāng)a為false時,a&&b的結(jié)果必然為false,在執(zhí)行過程中不再去計算b的值,直接給出結(jié)果;當(dāng)a為true時,a||b的結(jié)果必然為true,在執(zhí)行過程中也不再去計算b的值,直接給出結(jié)果.2.5數(shù)組運算2.標(biāo)量邏輯運算x=-4;y=-3;z=-2;x<y&&y<zans=1x<y<z%注意與上面的結(jié)果不同ans=0x<y||a>0%當(dāng)x<y為真時,||短路了,a>0不計算ans=1x<y|a>0%|不具備短路功能,計算a>0時因為a未定義出現(xiàn)錯誤未定義函數(shù)或變量'a'2.5數(shù)組運算2.5.5位運算位運算是按二進(jìn)制位進(jìn)行的運算,參與運算的對象必須是相同類型的數(shù)組.有位與(bitand)、位或(bitor)、位異或(bitxor)、位反(bitcmp)、位移(bitshift)、位獲取(bitget)以及位設(shè)置(bitset)等運算.2.5數(shù)組運算1.位與bitand(a,b)返回a和b對應(yīng)元素按位與的結(jié)果.例如bitand(int8(2),int8(7))(00000010)2(00000111)22(00000010)22.5數(shù)組運算2.位或bitor(a,b)返回a和b對應(yīng)元素按位或的結(jié)果.例如bitor(int8(2),int8(7))(00000010)2(00000111)27(00000111)22.5數(shù)組運算3.位異或bitxor(a,b)
返回a和b對應(yīng)元素按位異或的結(jié)果.例如bitxor(int8(2),int8(7))(00000010)2(00000111)25(00000101)22.5數(shù)組運算4.位反bitcmp(a)返回a元素按位取反的結(jié)果.例如bitcmp(int8(2))(00000010)2-3(11111101)22.5數(shù)組運算5.位移bitshift(a,k)返回a元素按位左移k位的結(jié)果.例如bitshift(int8(2),2)(00000010)28(00001000)22.5數(shù)組運算6.位獲取bitget(a,k)
返回a元素二進(jìn)制位的第k位的結(jié)果.例如bitget(int8(2),2)(00000010)2112.5數(shù)組運算7.位設(shè)置bitset(a,k)
返回a元素將二進(jìn)制位的第k位設(shè)置為1的結(jié)果.例如bitset(int8(4),2)(00000100)26(00000110)22.5數(shù)組運算2.5.6集合運算在進(jìn)行集合運算時,MATLAB將數(shù)組作為集合來進(jìn)行運算.集合運算有集合并(union)、集合交(intersect)、集合差(setdiff)、集合異或(setxor)等運算.2.5數(shù)組運算1.集合并union(A,B)
返回集合A和B的并集,即A和B中所有元素去掉重復(fù)部分后的集合.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=union(A,B)C=1234562.5數(shù)組運算2.集合交intersect(A,B)返回集合A和B的交集,即A與B中相同的元素.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=intersect(A,B)C=252.5數(shù)組運算3.集合差setdiff(A,B)
返回集合A和B的差,即在A中但不在B中的元素.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=setdiff(A,B)C=162.5數(shù)組運算4.集合異或setxor(A,B)
返回集合A和B中不相同的元素.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=setxor(A,B)C=13462.5數(shù)組運算5.刪除重復(fù)元素unique(A)
返回集合A去掉重復(fù)元素后的集合,使每個元素都只有唯一一個.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=unique(A)C=12562.5數(shù)組運算6.判斷是否屬于集合元素ismember(A,B)
對每一個A中的元素ai,檢測集合B是否包含ai,如果包含則返回true,否則返回false,結(jié)果是與A同維的邏輯數(shù)組.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=ismember(A,B)C=
00111110002.5數(shù)組運算2.5.7數(shù)學(xué)函數(shù)MATLAB提供了大量的數(shù)學(xué)函數(shù),大大方便了科學(xué)工作者進(jìn)行各種數(shù)學(xué)運算,包括三角雙曲函數(shù)、統(tǒng)計函數(shù)、指數(shù)對數(shù)函數(shù)、復(fù)數(shù)函數(shù)、取整求余函數(shù)等.值得注意的是,絕大多數(shù)的數(shù)學(xué)函數(shù)都支持將數(shù)組作為函數(shù)參數(shù)。當(dāng)參數(shù)為數(shù)組時,函數(shù)將對數(shù)組中的每一個元素計算對應(yīng)的函數(shù)值,返回值是與參數(shù)同維的數(shù)組。2.5數(shù)組運算1.三角函數(shù)和雙曲函數(shù)MATLAB的三角函數(shù)和雙曲函數(shù)比較豐富,其函數(shù)名見課本表2.3和表2.4。例2.2繪制y=sin(x),x∈[?π,π]函數(shù)圖像.x=-pi:0.1:pi;%從-pi到pi,以0.1為步長進(jìn)行取點,得到一個向量y=sin(x);%對x中的每一個數(shù)計算對應(yīng)的sin函數(shù)值plot(x,y);%以x和y為坐標(biāo)點繪圖2.5數(shù)組運算2.統(tǒng)計函數(shù)MATLAB包含了大量的統(tǒng)計函數(shù),常用統(tǒng)計函數(shù)如下:函數(shù)名說明函數(shù)名說明sum求和cumsum累加prod求積cumprod累積diff差分gradient梯度max最大值min最小值mean平均值median中位數(shù)var方差std標(biāo)準(zhǔn)差cov協(xié)方差corrcoef相關(guān)系數(shù)sort排序
2.5數(shù)組運算A=rand(3)A=0.22900.44290.10320.01050.89500.18780.68780.80210.7388V=sum(A)%將矩陣A的元素按列求和,結(jié)果為一個行向量V=0.92742.14001.0298V=sum(A,2)%將矩陣A的元素按行求和,結(jié)果為一個列向量V=0.77521.09332.2287x=sum(A(:))%求數(shù)組A的所有元素之和x=4.09722.5數(shù)組運算V=rand(1,6)
%生成隨機向量V=0.27050.56240.25410.55270.56280.4551U=diff(V)%差分,即后項減前項U=0.2920-0.30830.29850.0101-0.1077[c,k]=min(V)%求向量V的最小值及其位置c=0.2541k=3[c,k]=max(V)%求向量V的最大值及其位置c=0.5628k=5[U,K]=sort(V)%將向量V從小到大進(jìn)行排序,并給出排序前各元素的位置U=0.25410.27050.45510.55270.56240.5628K=3164252.5數(shù)組運算3.指數(shù)對數(shù)函數(shù)MATLAB提供了一些指數(shù)函數(shù)和對數(shù)函數(shù):函數(shù)名說明函數(shù)名說明sqrt平方根pow2以2為底的指數(shù)exp以e為底的指數(shù)log自然對數(shù)log2以2為底的對數(shù)log10常用對數(shù)2.5數(shù)組運算4.復(fù)數(shù)函數(shù)MATLAB大多數(shù)的數(shù)學(xué)函數(shù)也都可以對復(fù)數(shù)進(jìn)行運算,這里所說的復(fù)數(shù)函數(shù)是專門用于對復(fù)數(shù)進(jìn)行一些操作的函數(shù).函數(shù)名說明函數(shù)名說明complex構(gòu)造復(fù)數(shù)isreal判斷是否為實矩陣real復(fù)數(shù)的實部imag復(fù)數(shù)的虛部abs復(fù)數(shù)的模或?qū)崝?shù)絕對值conj共軛復(fù)數(shù)angle復(fù)數(shù)的相角
2.5數(shù)組運算示例:A=[1+2i,4-2i,1-6i,4i]%定義復(fù)數(shù)向量A=1.0000+2.0000i4.0000-2.0000i1.0000-6.0000i0.0000+4.0000iX=real(A)%取復(fù)數(shù)向量A的實部X=1410Y=imag(A)%取復(fù)數(shù)向量A的虛部Y=2-2-64abs(A)%計算復(fù)數(shù)向量A的模ans=2.23614.47216.08284.00002.5數(shù)組運算5.取整求余函數(shù)MATLAB有多種取整和求余函數(shù),如下表所示:mod和rem都可用于求余,當(dāng)x和y的正負(fù)號一樣的時候,mod(x,y)和rem(x,y)兩個函數(shù)結(jié)果是等同的;當(dāng)x和y的符號不同時,rem(x,y)函數(shù)結(jié)果的符號和x的相同,而mod(x,y)和y相同.函數(shù)名說明函數(shù)名說明floor向下取整ceil向上取整round四舍五入取整fix零方向取整mod求余數(shù)rem求余數(shù)sign符號函數(shù)
2.6矩陣運算矩陣運算是針對矩陣整體的數(shù)學(xué)運算,包括算術(shù)運算、矩陣分析、線性方程組、矩陣分解以及矩陣函數(shù)運算.2.6.1矩陣算術(shù)運算矩陣加法:A+B
矩陣減法:A?B矩陣乘法:A*B
矩陣乘方:A^n,計算A的n次方,n是標(biāo)量矩陣(右)除法:A/B,計算AB?1
矩陣左除法:A\B,計算A?1B2.6矩陣運算示例:A=[121;314;250];B=[101;010;110];C=A*B%矩陣相乘C=231753252C=A/B%AB-1C=12042-1032C=A*inv(B)%AB-1C=12042-10322.6矩陣運算示例:C=A*B^(-1)
%AB-1C=12042-1032C=A\B%A-1BC=
-1.44441.3333-2.22220.7778-0.33330.88890.8889-0.66671.4444C=inv(A)*B
%A-1BC=-1.44441.3333-2.22220.7778-0.33330.88890.8889-0.66671.44442.6矩陣運算2.6.2矩陣的初等變換利用矩陣的算術(shù)運算可以實現(xiàn)矩陣的初等變換.(1)交換兩行:A([i,j],:)=A([j,i],:);(2)某一行乘以一個常數(shù):A(i,:)=c*A(i,:);(3)某一行乘以一個常數(shù)加到另一行:A(j,:)=c*A(i,:)+A(j,:).2.6矩陣運算示例:A=rand(3)A=0.60650.09870.19180.08160.72040.64820.72860.91390.4076A([1,2],:)=A([2,1],:)%交換兩行A=0.08160.72040.64820.60650.09870.19180.72860.91390.4076A(2,:)=2*A(2,:)%第2行乘以2A=0.08160.72040.64821.21290.19740.38350.72860.91390.4076A(3,:)=3*A(2,:)+A(3,:)%第2行乘以3加到第3行A=0.08160.72040.64821.21290.19740.38354.36741.50611.55822.6矩陣運算2.6.3 矩陣分析矩陣分析主要是計算矩陣的各項特征屬性,在矩陣論、線性代數(shù)中有重要應(yīng)用.1-范數(shù):norm(A,1)2-范數(shù):norm(A)或norm(A,2)無窮范數(shù):norm(A,Inf)p-范數(shù):norm(A,p)2.6矩陣運算2.6.3 矩陣分析矩陣的秩:rank(A)行列式的值:det(A)矩陣的逆:inv(A)矩陣的偽逆:pinv(A)矩陣的跡:trace(A)矩陣的簡化梯形形式:rref(A)矩陣的條件數(shù):cond(A)矩陣的特征值和特征向量:[V,D]=eig(A)2.6矩陣運算A=[213;021;142];rank(A)%矩陣的軼ans=3det(A)%行列式的值ans=
-5B=inv(A)%逆矩陣B=0-2.00001.0000-0.2000-0.20000.40000.40001.4000-0.8000A*Bans=1.0000-0.00000.000001.00000001.0000C=pinv(A)%偽逆
-0.0000-2.00001.0000-0.2000-0.20000.4000
0.40001.4000-0.8000trace(A)
%矩陣的跡ans=6示例:2.6矩陣運算rref(A)%簡化的行梯形形式ans=100010001cond(A)
%條件數(shù)ans=
16.3203[V,D]=eig(A)%特征值和特征向量V=0.6874-0.9693-0.75860.26330.2436-0.2252-0.6769-0.0349-0.6114D=-0.57120001.85670004.7145示例:2.6矩陣運算2.6.4線性方程組MATLAB求解線性方程組總體上分為直接法和間接法兩類.直接法通過求線性方程組的系數(shù)矩陣的逆來求解方程,而間接法則是通過構(gòu)造迭代公式,通過迭代法逐步逼近解.2.6矩陣運算1.直接法設(shè)有兩個矩陣A和B,求解X使得AX=B.若A可逆,則下面方法都可以求解:X=A\BX=A^(-1)*BX=inv(A)*BX=linsolve(A,B)2.6矩陣運算A=[326;157;812];%系數(shù)矩陣B=[1;5;3];%右邊項X=A\B;X=A^(-1)*B;X=inv(A)*B;X=linsolve(A,B)X=0.29911.7179-0.5556A*X%驗證ans=1.00005.00003.0000示例:2.6矩陣運算1.直接法如果A不是方陣,或是奇異的方陣,則下面的方法可以求AX=B的一個解或最小二乘意義下的最優(yōu)解.X=A\BX=(A'*A)^(-1)*(A'*B)X=pinv(A)*BX=linsolve(A,B)2.6矩陣運算A=[1-11;001;111;421;931];%系數(shù)矩陣B=[9.0888;3.8853;2.8931;5.9191;12.7056];%右邊項C=A\B;%求最小二乘意義解C=(A'*A)^(-1)*(A'*B);C=pinv(A)*B;C=linsolve(A,B)C=1.9999-3.0730
3.9718norm(A*C-B)
%誤差ans=0.1428示例:2.6矩陣運算
說明注釋pcg(預(yù)條件共軛梯度法)系數(shù)矩陣必須是對稱正定矩陣.由于只需要存儲有限數(shù)量的向量,因此是最有效的對稱正定方程組求解器.lsqr(最小二乘法)可用于求解超定線性方程組.在解析上等效于應(yīng)用于標(biāo)準(zhǔn)方程(ATA)x=ATb的共軛梯度法.minres(最小殘差法)系數(shù)矩陣必須是對稱矩陣,但無需是正定矩陣.每次迭代都會最小化2-范數(shù)中的殘差,從而保證算法能夠逐步取得進(jìn)展.symmlq(對稱LQ)系數(shù)矩陣必須是對稱矩陣,但無需是正定矩陣.求解投影方程組,并使殘差與所有先前的殘差正交.bicg(雙共軛梯度法)bicg的計算成本低,但收斂不規(guī)則而且不可靠.bicg具有很重要的歷史地位,因為很多迭代算法都是基于它改進(jìn)而來.bicgstab(雙共軛梯度穩(wěn)定法)系數(shù)矩陣必須是方陣.交替使用BiCG步驟與GMRES(1)步驟,以提高穩(wěn)定性.bicgstabl(雙共軛梯度穩(wěn)定法-l)系數(shù)矩陣必須是方陣.交替使用BiCG步驟與GMRES(2)步驟,以提高穩(wěn)定性.cgs(共軛梯度二乘法)系數(shù)矩陣必須是方陣.需要與bicg相同的每次迭代操作數(shù),但要避免通過操作平方殘差來使用轉(zhuǎn)置.gmres(廣義最小殘差法)最可靠的算法之一,因為每次迭代都能最小化殘差范數(shù).工作量和所需的存儲量隨迭代次數(shù)線性增加.qmr(擬最小殘差法)系數(shù)矩陣必須是方陣.每次迭代的開銷略高于bicg,但提供了更好的穩(wěn)定性.tfqmr(無轉(zhuǎn)置擬最小殘差法)系數(shù)矩陣必須是方陣.當(dāng)內(nèi)存有限時,是嘗試用于求解對稱不定方程組的最佳求解器.2.6矩陣運算A=[1-11;001;111;421;931];%系數(shù)矩陣B=[9.0888;3.8853;2.8931;5.9191;12.7056];%右邊項C=lsqr(A,B)
%使用迭代法求最小二乘解C=1.9999-3.0730
3.9718x=[-10123];y=B;xx=linspace(-1,3);yy=polyval(C,xx);
%計算多項式的值plot(x,y,'o',xx,yy);
%作圖示例:2.6矩陣運算2.6.5 矩陣分解矩陣分解是把一個矩陣分解成若干矩陣的乘積形式,利用矩陣分解可求解較大規(guī)模的線性方程組.1.LU分解[L,U]=lu(A)LU分解是將方陣A分解為A=LU,其中L是上三角矩陣,U是下三角矩陣.2.6矩陣運算
2.6矩陣運算A=[1-11;001;111];B=[9.0888;3.8853;2.8931];[L,U]=lu(A)L=100001110U=1-11020001X=U\(L\B)%求解線性方法組AX=BX=2.1057-3.09793.8853inv(U)*inv(L)%求A的逆ans=0.5000-1.00000.5000-0.500000.500001.00000det(L)*det(U)%求A的行列式ans=-2示例:2.6矩陣運算2.QR分解[Q,R]=qr(A)QR分解是將m×n的矩陣A分解為A=QR,其中Q是m×n的矩陣,且Q是正交矩陣,即QTQ=I,I是n階單位陣,R是n×n的上三角矩陣.QR分解常用于求解矩陣的特征值、矩陣的逆、最小二乘等問題.
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 液體乳品加工過程中的節(jié)能減排考核試卷
- 方便素食加工考核試卷
- 礦山測量新技術(shù)與數(shù)據(jù)應(yīng)用考核試卷
- 毛巾企業(yè)生產(chǎn)安全風(fēng)險評估與防范考核試卷
- 腫瘤靶向治療與免疫治療考核試卷
- 上饒師范學(xué)院《二外(法語)2》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇省南京玄武外國語學(xué)校2025年初三元月調(diào)研測試物理試題試卷含解析
- 咸陽師范學(xué)院《環(huán)境工程基礎(chǔ)勞動》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海市浦東新區(qū)南匯中學(xué)2024-2025學(xué)年高三物理試題月考試題含解析
- 南京信息工程大學(xué)《高等天然藥物化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年建筑工程裝飾合同范本
- 2025-2030中國可再生能源行業(yè)發(fā)展分析及投資前景與戰(zhàn)略規(guī)劃研究報告
- 院校建設(shè)可行性研究報告
- 《電力設(shè)備典型消防規(guī)程》知識培訓(xùn)
- 四川省成都東部新區(qū)龍云學(xué)校2024-2025學(xué)年五年級下冊半期測試題(含答案)
- 兒童支氣管哮喘診斷與防治指南(2025版)解讀課件
- 倉管員安全培訓(xùn)課件
- 紅藍(lán)黃光治療皮膚病臨床應(yīng)用專家共識解讀
- 區(qū)域健康醫(yī)療大數(shù)據(jù)中心建設(shè)方案
- 鉚接粘接與錫焊教案
- 工業(yè)數(shù)字孿生測試要求
評論
0/150
提交評論