版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
MATLAB數(shù)據(jù)類型及運(yùn)算MATLAB的保留常量常量取值ans結(jié)果的缺省變量名i,j虛數(shù)單位,定義為i=j=pi圓周率,3.1415926eps機(jī)器零閾值,當(dāng)和1相加就產(chǎn)生一個比1大的數(shù)。eps=2.2204x10-16realmax最大正浮點(diǎn)數(shù),realmax=1.7977x10308realmin最小正浮點(diǎn)數(shù),realmin=2.2251x10-308Inf(inf)無窮大,包含正無窮和負(fù)無窮,如1/0NaN(nan)不定值,包含0/0和∞/∞MATLAB的保留常量常量取值nargin函數(shù)輸入?yún)?shù)個數(shù)nargout函數(shù)輸出參數(shù)個數(shù)lasterr存放最新的錯誤信息lastwarn存放最新的警告信息例:最小復(fù)數(shù)單位的使用。>>x=ix=0+1.0000i>>i=1i=1>>y=i+jy=1.0000+1.0000i>>clear>>z=i+jz=0+2.0000i7+5i7+5*iMATLAB語言中的變量(1)變量不需要事先聲明,也不需要指定維數(shù),MATLAB在遇到新的變量名時,會自動建立變量并分配內(nèi)存;(2)給變量賦值時,如果變量不存在,會創(chuàng)建它;如果變量存在,會更新它的值;(3)賦值時,右邊的表達(dá)式必須有一個值(即使值為空)。MATLAB語言中的變量MATLAB語言的變量命名規(guī)則是:(1)變量名必須是不含空格的單個詞;(2)變量名必須以字母打頭,之后可以是任意字母、數(shù)字或下劃線,變量名中不允許使用標(biāo)點(diǎn)符號(3)變量名可任意長,但使用前N個字符。N與硬件有關(guān),由函數(shù)namelengthmax返回,一般N=63;(4)變量名區(qū)分大小寫;(5)不能使用函數(shù)名和系統(tǒng)保留字;如要察看變量a的值,只需要在命令窗口中輸入變量的名稱即可:>>a任何MATLAB的語句的執(zhí)行結(jié)果都可以在屏幕上顯示,同時賦值給指定的變量,沒有指定變量時,賦值給一個特殊的變量ans,數(shù)據(jù)的顯示格式由format命令控制。format只是影響結(jié)果的顯示,不影響其計算與存儲;MATLAB總是以雙字長浮點(diǎn)數(shù)(雙精度)來執(zhí)行所有的運(yùn)算。>>Abc_1=10Abc_1=10>>a=[123];>>aa=123>>abc_1???Undefinedfunctionorvariable'abc_1'.>>Abc_1Abc_1=10例:計算表達(dá)式的值,并顯示計算結(jié)果。
在MATLAB命令窗口輸入命令:>>x=1+2i;>>y=3-sqrt(17);>>z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))z=-0.3488+0.3286iMATLAB中每一個數(shù)據(jù)元素都是雙精度表示和存儲的。如果輸出矩陣的每個元素都是純整數(shù),MATLAB就用不加小數(shù)點(diǎn)的純整數(shù)格式顯示結(jié)果。只要矩陣中有一個元素不是純整數(shù),MATLAB就按當(dāng)前的輸出格式顯示計算結(jié)果。數(shù)據(jù)輸出時可用format命令設(shè)置或改變輸出格式,format命令的格式為:
format格式符格式符決定數(shù)據(jù)的輸出格式。指令含義舉例說明formatshort輸出小數(shù)點(diǎn)后4位有效數(shù)字,最多不超過7位;對于大于1000的實(shí)數(shù),用5位有效數(shù)字的科學(xué)計數(shù)形式顯示314.159被顯示為314.1590;3141.59被顯示為3.1416e+003formatlong15位有效數(shù)字?jǐn)?shù)字表示3.14159265358979formatshorte5位有效數(shù)字的科學(xué)記數(shù)表示3.1416e+00formatlonge15位有效數(shù)字的科學(xué)記數(shù)表示3.14159265358979e+00formatshortg從formatshort和formatshorte中自動選擇最佳輸出方式3.1416formatlongg從formatlong和formatlonge中自動選擇最佳輸出方式3.14159265358979formatrat近似有理數(shù)表示355/113指令含義舉例說明formathex十六進(jìn)制表示4009211h54442d18format+正數(shù)、負(fù)數(shù)、零分別用+、-、空格表示+formatbank(金融)元、角、分表示3.14formatcompact顯示變量之間沒有空行formatloose在顯示變量之間有空行默認(rèn)的顯示格式是short該表中實(shí)現(xiàn)的所有格式設(shè)置僅在MATLAB的當(dāng)前執(zhí)行過程中有效。>>x=[4/31.2345e-6]x=1.33330.0000>>formatshort>>xx=1.33330.0000>>formatshorte>>xx=1.3333e+0001.2345e-006>>formatlong>>xx=1.3333333333333330.000001234500000>>formatlonge>>xx=1.333333333333333e+0001.234500000000000e-006>>formatbank>>xx=1.330.00>>formathex>>xx=3ff55555555555553eb4b6231abfd271>>format+>>xx=++矩陣矩陣是Matlab的基本處理對象,Matlab的大部分運(yùn)算或命令都是在矩陣運(yùn)算的定義下執(zhí)行的。生成矩陣時無須對矩陣的維數(shù)和類型進(jìn)行說明,Matlab會根據(jù)用戶輸入的內(nèi)容自動進(jìn)行設(shè)置。矩陣中的元素可以采用具體數(shù)值或表達(dá)式,可以通過下標(biāo)對元素進(jìn)行訪問、輸入或修改。矩陣的創(chuàng)建直接輸入利用已建好的矩陣建立更大的矩陣?yán)肕ATLAB內(nèi)部函數(shù)利用M文件建立矩陣外部數(shù)據(jù)文件裝載對于較大矩陣的輸入,可采用變量編輯器。
矩陣的建立
1、直接輸入法
從鍵盤直接輸入矩陣的元素。矩陣元素可以是實(shí)數(shù),復(fù)數(shù),也可以是表達(dá)式。但表達(dá)式中不可包含未知的變量,MATLAB用表達(dá)式的值為該位置的矩陣元素賦值。當(dāng)矩陣中沒有任何元素時,該矩陣被稱作“空陣”(EmptyMatrix)。具體方法如下:(1)全部矩陣元素必須用方括號([])括起來,按矩陣行的順序輸入各元素。(2)同一行的各元素之間用空格或逗號分隔。不同行的元素之間用分號或回車符分隔。(3)矩陣元素可為運(yùn)算表達(dá)式,若不想獲得中間結(jié)果,可以用“;”結(jié)束。例如,在CommandWindow窗口中輸入如下形式:
A=[2345;1357;0369]
或A=[234513570369]
結(jié)果為:
A=234513570369直接輸入復(fù)數(shù)矩陣:兩種方式:
B=[123;456]+i*[123;456]或B=[1+i2+2i3+3i;4+4i5+5i6+6i]
結(jié)果為:
B=1.0000+1.0000i2.0000+2.0000i3.0000+3.0000i4.0000+4.0000i5.0000+5.0000i6.0000+6.0000i
矩陣的建立
>>y=[2,4,5368]>>y=245368>>a=1;b=2;c=3;>>x=[5bc;a*ba+cc/b]>>x=5.00002.00003.00002.00004.00001.5000>>z=[2pi/2;sqrt(3)3+5i]>>z=2.00001.57081.73213.0000+5.0000i在命令窗口中輸入矩陣的建立多維矩陣的創(chuàng)建>>a=[123;456;789]a=123456789>>a(:,:,2)=[001;010;100]a(:,:,1)=123456789a(:,:,2)=00101010022由向量構(gòu)成矩陣向量是組成矩陣的基本元素之一。向量元素需要用方括號括起來。元素之間用空格和逗號分隔生成行向量,用分號隔開生成列向量??梢园研邢蛄靠闯?n階矩陣,把列向量看成n1
階矩陣。向量的構(gòu)造方法:直接輸入向量利用冒號生成向量利用linspace/logspace生成向量矩陣的建立例:在命令窗口輸入:>>a=[0123456789]或>>a=[0,1,2,3,4,5,6,7,8,9]按“Enter”鍵確認(rèn)后,在命令窗口中顯示a=0123456789冒號表達(dá)式在MATLAB中,冒號是一個重要的運(yùn)算符,利用它可以產(chǎn)生行向量。(1)“初值:終值”方式。創(chuàng)建以初值開始以終值結(jié)束且間隔為1的行向量。例:在命令窗口輸入:>>a=1:5按“Enter”鍵確認(rèn)后,在命令窗口中顯示a=12345(2)“初值:間隔:終值”方式。創(chuàng)建以初值開始以終值結(jié)束且以給定間隔為增量的行向量。例:在命令窗口輸入:>>a=0:5:30按“Enter”鍵確認(rèn)后,在命令窗口中顯示a=
051015202530>>v1=0:0.2:piv1=Columns1through900.20000.40000.60000.80001.00001.20001.40001.6000Columns10through161.80002.00002.20002.40002.60002.80003.0000>>
v2=0:-0.1:pi%步距為負(fù),不能生成向量,得出空矩陣v2=Emptymatrix:1-by-0>>v3=0:piv3=0123>>v4=pi:-1:0%逆序排列構(gòu)成新向量v4=3.14162.14161.14160.1416>>v5=[0:0.4:pi,pi]v5=00.40000.80001.20001.60002.00002.40002.80003.1416(3)利用linspace創(chuàng)立。在命令窗口輸入“a=linspace(初值,終值,n)”,則會創(chuàng)建以初值開始以終值結(jié)束且共有n個元素的行向量a。缺省n為100。顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價。例:在命令窗口輸入:>>a=linspace(1,10,10)按“Enter”鍵確認(rèn)后,在命令窗口中顯示a=12345678910(4)利用logspace創(chuàng)立。在命令窗口輸入“a=logspace(n1,n2,n)”,則會創(chuàng)建以10n1值開始以10n2值結(jié)束且共用n個對數(shù)分割量的行向量a。缺省n為50。例:在命令窗口輸入:>>a=logspace(1,3,3)按“Enter”鍵確認(rèn)后,在命令窗口中顯示a=101001000>>b=logspace(0,2,4)b=
1.00004.641621.5443100.0000>>x=0:0.5:2
x=00.50001.00001.50002.0000>>y=linspace(0,2,7)y=
00.33330.66671.00001.33331.66672.0000>>z=[-1x3]z=-1.000000.50001.00001.50002.00003.0000>>u=[y;z]u=00.33330.66671.00001.33331.66672.0000-1.000000.50001.00001.50002.00003.0000利用已建好的矩陣建立更大的矩陣大矩陣可由已建好的小矩陣拼接而成。例如:>>A=[1,2,3;4,5,6;7,8,9];>>B=[11,12,13;14,15,16;17,18,19];>>C=[A,B;B,A]C=123111213456141516789171819111213123141516456171819789矩陣的建立2、利用MATLAB函數(shù)建立數(shù)值矩陣MATLAB提供了許多生成和操作矩陣的函數(shù),可以利用它們建立矩陣。例:利用reshape函數(shù)建立數(shù)值矩陣>>a=1:9;>>b=reshape(a,3,3)b=147258369%生成空陣>>K=[]
K=
[]利用diag函數(shù)建立對角矩陣>>A=rand(4,4)%產(chǎn)生4x4的“0-1”分布的矩陣AA=0.81470.63240.95750.95720.90580.09750.96490.48540.12700.27850.15760.80030.91340.54690.97060.1419>>B=diag(A)%利用矩陣A的主對角線的元素建立矩陣BB=0.81470.09750.15760.1419>>C=diag(B)%利用矩陣B中元素構(gòu)建對角矩陣CC=0.814700000.097500000.157600000.14193利用M文件建立矩陣對于比較大且比較復(fù)雜的矩陣,可以為它專門建立一個M文件。例:在M文件窗口中輸入
A=[2345;1357;0369]
如果文件test.m保存在MATLAB搜索路徑中,在MATLAB命令窗口中輸入test就可產(chǎn)生矩陣A,可供以后使用。
矩陣的建立
運(yùn)行test文件結(jié)果如下:>>testA=23451357036936利用M文件產(chǎn)生矩陣A=[1,2,3,4,56,7,8,9,1011,12,13,14,1516,17,18,19,2021,22,23,24,25]4利用外部數(shù)據(jù)文件裝入到指定矩陣:(1)通過MATLAB提供的文件輸入、輸出函數(shù)來實(shí)現(xiàn)。例:將圖像penquan.jpg讀入到矩陣中,在CommandWindow窗口輸入如下語句:
>>I=imread('penquan.jpg');>>whosNameSizeBytesClassAttributesI1944x2592x315116544uint8
矩陣的建立(2)通過load命令,將外部數(shù)據(jù)文件中的內(nèi)容調(diào)入到工作空間中創(chuàng)建矩陣,外部文件的擴(kuò)展名為.dat。例如:>>loadtest.dat>>test從外部數(shù)據(jù)文件調(diào)入矩陣用load命令輸入用Import菜單輸入矩陣的尋址與賦值全下標(biāo)方式指出某一元素在第幾行第幾列。單下標(biāo)方式只用一個下標(biāo)來指明元素在數(shù)組中的位置。要對二維數(shù)組的所有元素進(jìn)行“一維編號”。矩陣元素
(1)MATLAB允許對一個矩陣的單個元素進(jìn)行賦值和操作。通過下標(biāo)引用矩陣的元素,例如
A(3,2)=200
只改變該元素的值,不影響其他元素的值。42矩陣元素的修改>>A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]
A=
12345678910111213141516>>A(1,1)ans=1>>A(2,3)ans=7>>A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);>>AA=
0234577891011121314151矩陣元素
如果給出的行下標(biāo)或列下標(biāo)大于原來矩陣的行數(shù)和列數(shù),則MATLAB將自動擴(kuò)展原來的矩陣,并將擴(kuò)展后未賦值的矩陣元素置為0。 >>A=[1,2,3;4,5,6]; >>A(4,6)=100 A= 123000 456000 000000 00000100矩陣元素
(2)采用矩陣元素的序號來引用矩陣元素。矩陣元素的序號就是相應(yīng)元素在內(nèi)存中的排列順序。在MATLAB中,矩陣元素按列存儲,先第一列,再第二列,依次類推。例如
A=[1,2,3;4,5,6];
A(3)
ans=
2
顯然,序號(Index)與下標(biāo)(Subscript)是一一對應(yīng)的,以m×n矩陣A為例,矩陣元素A(i,j)的序號為(j-1)*m+i。矩陣元素的引用>>rand('state',0)>>x=rand(1,5)x=0.95010.23110.60680.48600.8913>>x(3)ans=0.6068>>x([125])%位置坐標(biāo)中間可以用逗號分隔ans=0.95010.23110.8913>>x(1:3)ans=0.95010.23110.6068矩陣元素的引用>>rand('state',0)>>x=rand(1,5)%生成均勻分布的隨機(jī)矩陣x=0.95010.23110.60680.48600.8913>>x(3:end)ans=0.60680.48600.8913>>x(3:-1:1)ans=0.60680.23110.9501>>x(find(x>0.5))ans=0.95010.60680.8913>>a=[123;456]a=123456>>a(2,2)ans=5>>a(1,3)=0a=120456>>b=a(4)b=5如果矩陣中只有部分元素需要改動,則可以通過對矩陣的賦值來完成。>>rand('state',0)>>x=rand(1,5)x=0.95010.23110.60680.48600.8913>>x(3)=0x=0.95010.231100.48600.8913>>x([14])=[11]x=1.00000.231101.00000.8913A(i,j):提取A矩陣第i行,第j列的元素(從1開始計數(shù))A(:,j):表示取A矩陣第j列的全部元素A(i,:):表示取A矩陣第i行的全部元素A(i:i+m,:):表示提取A矩陣第i~i+m行的全部元素;A(:,k:k+m):表示提取A矩陣第k~k+m列的全部元素;A(i:i+m,k:k+m)表示取A矩陣第i~i+m行內(nèi),并在第k~k+m列中的所有元素。A(m1:m2,n1:n2):提取第m1行到第m2行內(nèi),并在第n1列到第n2列中的所有元素(提取子塊);A(k):提取矩陣A按列存儲的第k個元素。例如,對于4x4矩陣A,A(8)是指矩陣A中的元素A(4,2);A(:):得到一個長列矢量,該矢量的元素將矩陣的列按先左后右的順序排成一維長列,再對元素位置編號;可利用一般向量和end運(yùn)算符來表示矩陣下標(biāo),從而獲得子矩陣。end表示某一維的末尾元素下標(biāo)。矩陣的拆分50矩陣的引用選出矩陣指定行、列及元素(創(chuàng)建子矩陣);
>>b=a(1:2,2:3)b=2356使矩陣中所有元素變?yōu)橐涣小?/p>
>>c=b(:)c=2536例:>>A=[1,2,3,4;3,4,5,6;5,6,7,8;7,8,9,0]A=1234345656787890>>B1=A(1:2:end,:)%提取全部奇數(shù)行、所有列。B1=12345678子矩陣提取
%提取3,2,1行、2,3,4列構(gòu)成子矩陣。
>>B2=A([3,2,1],[2,3,4])A=B2=1234678345645656782347890%將A矩陣左右翻轉(zhuǎn),即最后一列排在最前面。>>B3=A(:,end:-1:1)B3=4321654387650987矩陣下標(biāo)如果在提取矩陣值時,行或列的值大于矩陣的大小,則出錯;例:對于矩陣A,給出結(jié)果。>>A=[246;357;189]A=246357189A(2,:)A(:,3)A(1:2,2:3)A(2:3,1:3)A(:)>>A(2,:)ans=357>>A(:,3)ans=679>>A(1:2,2:3)ans=4657>>A(2:3,1:3)ans=357189>>A(:)ans=231458679矩陣元素的刪除利用空矩陣刪除矩陣的元素空矩陣是指無任何元素的矩陣。在MATLAB中,定義[]為空矩陣。給變量X賦空矩陣的語句為X=[]。注意:X=[]與clearX不同,clear是將X從工作空間中刪除,而空矩陣則存在于工作空間中,只是維數(shù)為0。消除子塊:如果將矩陣的子塊賦值為空矩陣[],則相當(dāng)于消除了相應(yīng)的矩陣子塊。如果刪除了矩陣中的單個元素,矩陣將不再是矩陣。A(1,2)=[]將給出出錯信息。使用單下標(biāo)可以刪除矩陣單個元素,剩下的元素排成一個行向量。例:>>A=[2345;1357;0369]A=234513570369>>A([12],[12])=[]???Subscriptedassignmentdimensionmismatch.>>A([12],:)=[]A=0369>>A=[2345;1357;0369]A=234513570369>>A(:,[12])=[]A=455769>>A=[2345;1357;0369]A=234513570369>>A(1,2)=[]???Subscriptedassignmentdimensionmismatch.字符串字符串中的每一個字符(含空格符)以其ASCII形式存放。所有字符串都用單引號括起來。>>s='matlab'一個字符串被視為一個行向量,字符串中的每個字符(包括空格)都是字符串變量(矩陣或向量)中的一個元素。字符串中的字符以ASCII碼形式儲存并區(qū)分大小,用函數(shù)abs可以看到字符的ASCII碼。在Matlab中,字符串和字符矩陣基本上是等價的。>>s=['matlab']等價于>>s='matlab'創(chuàng)建字符串MATLAB中所有字符串使用單引號界定后輸入或賦值。例如:>>a='matlab'a=matlab字符串的每個字符(含空格)都是相應(yīng)矩陣的一個元素>>size(a)ans=16%一行六列創(chuàng)建字符串字符變量可以通過中括號合并成更大的字符串>>a='MAT'a=MAT>>b=[a,'LAB']b=MATLAB從字符串中提取小字符串>>c=b(2:5)c=ATLA直接輸入建立二維字符串?dāng)?shù)組>>str=['one';'two';'three']???Errorusing==>vertcatCATargumentsdimensionsarenotconsistent.直接輸入方法中每一行的字符數(shù)必須一致>>str=['one';'two';'six']str=onetwosix利用‘str2mat’函數(shù)建立二維字符串?dāng)?shù)組>>str=str2mat('one','two','three')str=onetwothree例:建立一個字符串向量,然后對該向量做如下處理:
(1)取第1~5個字符組成的子字符串。
(2)將字符串倒過來重新排列。
(3)將字符串中的小寫字母變成相應(yīng)的大寫字母,其余字符不變。
(4)統(tǒng)計字符串中小寫字母的個數(shù)。>>ch='ABc123d4e56Fg9';>>subch=ch(1:5)%取子字符串subch=ABc12>>revch=ch(end:-1:1)%將字符串倒排revch=9gF65e4d321cBA>>k=find(ch>='a'&ch<='z')%找小寫字母的位置k=37913>>ch(k)=ch(k)-('A'-'a')%將小寫字母變成相應(yīng)的大寫字母ch=ABC123D4E56FG9>>length(k)%統(tǒng)計小寫字母的個數(shù)ans=4類型轉(zhuǎn)換int2str四舍五入為整數(shù)轉(zhuǎn)換為字符串num2str將數(shù)字轉(zhuǎn)換為字符串mat2str將矩陣的數(shù)據(jù)轉(zhuǎn)換為字符串str2num將字符串轉(zhuǎn)變?yōu)閿?shù)字‘num2str’和‘str2num’函數(shù)的用法實(shí)例。>>a=['12';'34']a=1234>>b=str2num(a)b=1234>>c=str2num('1+2i')c=1.0000+2.0000i>>d=str2num('1+2i')
%注意空格d=1.00000+2.0000i‘num2str’和‘str2num’函數(shù)的用法實(shí)例。>>e=num2str(rand(3,3),6)%可指定有效數(shù)字位數(shù)e=0.8147240.9133760.2784980.9057920.6323590.5468820.1269870.09754040.957507>>whosNameSizeBytesClassAttributesa2x312charb2x232doublec1x116doublecomplexd1x232doublecomplexe3x34204char
字符串函數(shù)eval(string)作為一個MATLAB命令求字符串的值blanks(n)返回一個n個空格的字符串deblank去掉字符串中后拖的空格feval求由字符串給定的函數(shù)值findstr從一個字符串內(nèi)找出字符串isletter字母存在時返回真值isspace空格字符存在時返回真值isstr輸入是一個字符串,返回真值lasterr返回上一個所產(chǎn)生MATLAB錯誤的字符串strcmp字符串相同,返回真值strrep用一個字符串替換另一個字符串strtok在一個字符串里找出第一個標(biāo)記字符串比較>>str1='matlab'str1=matlab>>str2='matrix'str2=matrix>>strcmp(str1,str2)ans=0>>strncmp(str1,str2,2)%比較兩個字符串的前兩個字符ans=1>>A=str1==str2%應(yīng)用‘==’比較字符串A=111000>>B=str1~=str2B=000111字符串分類>>str='MATLAB'str=MATLAB>>isletter(str)%判斷字符串中字符是否是字母ans=10101010101>>isspace(str))%判斷字符串中字符是否是空白字符ans=01010101010查找與替換>>str1='Iamastudent'str1=Iamastudent>>strrep(str1,'s','S')ans=IamaStudent查找與替換>>str1='Iamastudent'str1=Iamastudent>>str2='student';>>str3='teacher';>>str4=strrep(str1,str2,str3)str4=Iamateacher查找與替換>>str1='Iamastudent'str1=Iamastudent>>str2='student';>>position=findstr(str1,str2)%找出str2處于str1的位置position=8結(jié)構(gòu)數(shù)組結(jié)構(gòu)是包含一組記錄的數(shù)據(jù)類型,而記錄則是存儲在相應(yīng)的字段中。結(jié)構(gòu)的元素可以是不同的數(shù)據(jù)類型,它能將一組具有不同屬性的數(shù)據(jù)納入到一個統(tǒng)一的變量名下進(jìn)行管理。結(jié)構(gòu)數(shù)組的引用通過屬性名來實(shí)現(xiàn)。結(jié)構(gòu)數(shù)組的創(chuàng)建有兩種方法:語句直接創(chuàng)建和由struct函數(shù)創(chuàng)建。結(jié)構(gòu)型變量的生成直接輸入法:采用直接輸入法時,在給結(jié)構(gòu)體成員元素直接賦值的同時定義該元素的名稱,并使用點(diǎn)兒將結(jié)構(gòu)型變量和成員元素名連接。創(chuàng)建結(jié)構(gòu)數(shù)組>>='henry';>>employee.sex='male';>>employee.age='25';>>employee.number='123456789';>>employeeemployee=name:'henry'sex:'male'age:'25'number:'123456789'可以通過以下形式語句添加新的結(jié)構(gòu)變量(另外的學(xué)生數(shù)據(jù))。系統(tǒng)將默認(rèn)之前的employee為employee(1)>>employee(2).name='lee';>>employee(2).sex='female';>>employee(2).age='23';>>employee(2).number='987654321';>>employee(2)ans=name:'lee'sex:'female'age:'23'number:'987654321'此時,輸入employee將只得到該結(jié)構(gòu)的成員變量名而不顯示內(nèi)容>>employeeemployee=1x2structarraywithfields:namesexagenumber創(chuàng)建結(jié)構(gòu)數(shù)組使用struct函數(shù)創(chuàng)建結(jié)構(gòu)數(shù)組:根據(jù)指定的字段及其相應(yīng)的值創(chuàng)建結(jié)構(gòu)體數(shù)組。格式:str-array=struct(‘field’,val1,’field’,val2…);>>student=struct('name','henry','age',25,'grade',uint16(1))student=name:'henry'age:25grade:1>>whosNameSizeBytesClassAttributesstudent1x1392struct
>>student=struct('name',{'richard','jacson'},'age',{23,24},'grade',{2,3})student=1x2structarraywithfields:nameagegrade>>whosNameSizeBytesClassAttributesstudent1x2610struct>>student=struct('name',{},'age',{},'grade',{})student=0x0structarraywithfields:nameagegrade>>whosNameSizeBytesClassAttributesstudent0x0192struct>>student=repmat(struct('name','henry','age',25,'grade',1),1,3)student=1x3structarraywithfields:nameagegrade>>student(3)ans=name:'henry'age:25grade:1結(jié)構(gòu)數(shù)組中的數(shù)據(jù)獲取>>clear>>a(2)=struct('tag','openbutton','name','open','color','red');>>a(3)=struct('tag','exitbutton','name','exit','color','green');>>x=a(2).tag%利用“.”獲取結(jié)構(gòu)數(shù)組中的數(shù)據(jù)x=openbutton>>y=a(3).colory=green結(jié)構(gòu)數(shù)組的數(shù)據(jù)獲取和設(shè)置>>a(2)=struct('tag','openbutton','name','open','color','red');>>a(3)=struct('tag','exitbutton','name','exit','color','green');%通過getfield函數(shù)獲得結(jié)構(gòu)數(shù)組中的數(shù)據(jù)>>z=getfield(a,{2},'name')z=open%通過setfield函數(shù)設(shè)置結(jié)構(gòu)數(shù)組中的數(shù)據(jù)>>a=setfield(a,{2},'color','black');>>a(2).colorans=black結(jié)構(gòu)數(shù)組操作添加結(jié)構(gòu)數(shù)組中的結(jié)構(gòu)域要給結(jié)構(gòu)矩陣a增加一個成員x4,可給a中任意一個元素增加成員x4:a(1).x4=‘410075’;但其他成員均為空矩陣,可以使用賦值語句給它賦確定的值。>>clear>>a(2)=struct('tag','openbutton','name','open','color','red');>>a(2).position=[2552552550];%添加結(jié)構(gòu)域>>a(2)ans=tag:'openbutton'name:'open'color:'red'position:[2552552550]結(jié)構(gòu)數(shù)組操作刪除結(jié)構(gòu)數(shù)組中的結(jié)構(gòu)域>>clear>>a(2)=struct('tag','openbutton','name','open','color','red');%調(diào)用rmfield函數(shù)刪除結(jié)構(gòu)數(shù)組中的結(jié)構(gòu)域color>>a=rmfield(a,'color')a=1x2structarraywithfields:tagname結(jié)構(gòu)數(shù)組操作結(jié)構(gòu)數(shù)組運(yùn)算>>student(1)=struct('NO',06129,'name','john','score',[869176;859483])student=NO:6129name:'john'score:[2x3double]%調(diào)用mean函數(shù)計算結(jié)構(gòu)數(shù)組student的平均分?jǐn)?shù)>>aver=mean(student(1).score)aver=85.500092.500079.5000元胞數(shù)組元胞數(shù)組可看作一種無所不包的特殊矩陣。元胞數(shù)組的每一個元素稱為一個cell,每個cell自己本身又是一個數(shù)組。元胞數(shù)組中可以存放各種不同類型數(shù)據(jù),各元胞的內(nèi)容和維數(shù)可以不相同。訪問元胞數(shù)組的元素可以使用單下標(biāo)或全下標(biāo)方式元胞數(shù)組的創(chuàng)建使用“{}”。元胞數(shù)組占用的內(nèi)存空間和元胞數(shù)組的內(nèi)容相關(guān),不同元胞數(shù)組占用內(nèi)存空間不同。結(jié)構(gòu)體是根據(jù)屬性名組織起來的不同類型數(shù)據(jù)的集合。結(jié)構(gòu)體和單元數(shù)組的共同之處在于它們都提供了一種分級存儲機(jī)制來存儲不同類型的數(shù)據(jù),不同之處是組織數(shù)據(jù)的方式不一樣。結(jié)構(gòu)體數(shù)組里的數(shù)據(jù)是通過屬性名來引用的,而在單元數(shù)組里,數(shù)據(jù)是通過單元數(shù)組下標(biāo)引用來操作的。創(chuàng)建元胞數(shù)組由語句直接生成>>A={'test',[12;34],{'Good','Thanks'},rand(3)}A='test'[2x2double]{1x2cell}[3x3double]>>whosNameSizeBytesClassAttributesA1x4492cell
在顯示元胞數(shù)組內(nèi)容時,對于內(nèi)容較多的元胞,顯示的內(nèi)容為元胞的數(shù)據(jù)類型和尺寸。>>a={'matlab',20;ones(2,3),1:10}a='matlab'[20][2x3double][1x10double]>>b=[{'matlab'},{20};{ones(2,3)},{1:10}]b='matlab'[20][2x3double][1x10double]>>isequal(a,b)ans=1創(chuàng)建元胞數(shù)組由各元胞創(chuàng)建>>B{1,1}=[123;456;789];>>B{1,2}='kitty';>>B{2,1}=3+7i;>>B{2,2}=eye(3);>>BB=[3x3double]'kitty'[3.0000+7.0000i][3x3double]>>whosNameSizeBytesClassAttributesA1x4492cellB2x2410cell
>>c={10}c=[10]>>c(1,2)={2}c=[10][2]>>c(2,2)={5}c=[10][2][][5]MATLAB能夠自動擴(kuò)展數(shù)組的尺寸,沒有被明確賦值的元素作為空元胞數(shù)組存在。創(chuàng)建元胞數(shù)組cell函數(shù)創(chuàng)建元胞數(shù)組>>a=cell(1)a={[]}>>b=cell(1,2)b=[][]>>c=cell(3,3)c=[][][][][][][][][]創(chuàng)建元胞數(shù)組cell函數(shù)創(chuàng)建元胞數(shù)組>>d=cell(2,2,2)d(:,:,1)=[][][][]d(:,:,2)=[][][][]>>whosNameSizeBytesClassAttributesA1x4492cellB2x2410cella1x14cellans1x11logicalb1x28cellc3x336celld2x2x232cell
元胞數(shù)組中的數(shù)據(jù)獲得要顯示單元數(shù)組可以直接在命令窗口中輸入單元數(shù)組的名字,也可以使用函數(shù)celldisp(c)來輸出;想得到單元數(shù)組中某一個單元的值時,可以采用c(m,n)或c{m,n}的格式輸出。但是它們得到的結(jié)果表示形式是不同的。大括號用于表示元胞的內(nèi)容,小括號表示指定的元胞。分別用它們賦值產(chǎn)生的數(shù)據(jù)類型也不同。要訪問指定元胞中的具體元素,可以在元胞數(shù)組內(nèi)容下標(biāo)的后面加上指定數(shù)組元素的下標(biāo)。如a{1,2}(1,2)表示元胞a{1,2}的元素(1,2)?!皗}”和“()”直接相連,并且兩種括號不能寫混。元胞數(shù)組中的數(shù)據(jù)獲得>>a={20,'matlab';ones(2,3),1:3}a=[20]'matlab'[2x3double][1x3double]>>str=a{1,2}%a{1,2}表示對應(yīng)元胞的內(nèi)容str=matlab>>class(str)%查看變量str的數(shù)據(jù)類型,為字符型ans=char>>str2=a(1,2)%返回元胞數(shù)組,a(1,2)表示元胞數(shù)組中的一個元胞str2='matlab'>>class(str2)%查看變量str2的數(shù)據(jù)類型,為元胞ans=cell元胞數(shù)組中的數(shù)據(jù)獲得元胞中具體元素的訪問:>>a={20,'matlab';rand(2,3),1:3}a=[20]'matlab'[2x3double][1x3double]>>a{2,1}(2,2)ans=0.9572>>a{2,1}(2,3)ans=0.8003>>a{1,2}(2,3)???Indexexceedsmatrixdimensions.%a{1,2}為‘matlab’,無元素(2,3),故出錯>>a{1,2}(2)ans=a>>a{2,2}(2)ans=2元胞數(shù)組中的數(shù)據(jù)獲得使用元胞的下標(biāo)創(chuàng)建新的元胞數(shù)組>>a=[{1},{2},{3};{4},{5},{6};{7},{8},{9}]a=[1][2][3][4][5][6][7][8][9]>>b=a(2:3,2:3)b=[5][6][8][9]>>c=a(1:3,2:3)c=[2][3][5][6][8][9]元胞數(shù)組顯示使用celldisp函數(shù)顯示元胞數(shù)組內(nèi)容。函數(shù)celldisp()更適用于具有大量數(shù)據(jù)的單元數(shù)組的顯示。>>celldisp(a)a{1,1}=20a{2,1}=111111a{1,2}=matlaba{2,2}=123a{1,3}=3.0000-7.0000ia{2,3}=0c{m,n}和celldisp(c)顯示的結(jié)果形式相同。元胞數(shù)組顯示通過cellplot函數(shù)以圖形的方式顯示元胞數(shù)組內(nèi)容h=cellplot(c)返回一個向量,這個向量綜合體現(xiàn)了表面、線和句柄。h=cellplot(c,’legend’)返回一個向量,這個向量綜合體現(xiàn)了表面、線和句柄,并有圖形注釋。>>cellplot(a,'legend')元胞數(shù)組和數(shù)值數(shù)組之間的轉(zhuǎn)換數(shù)值數(shù)組轉(zhuǎn)換成元胞數(shù)組>>A=magic(3);>>C=num2cell(A,2)%2代表“直行被切割”,1代表“橫列被切割”
C=[1x3double][1x3double][1x3double]>>celldisp(C)C{1}=816C{2}=357C{3}=492元胞數(shù)組和數(shù)值數(shù)組之間的轉(zhuǎn)換元胞數(shù)組轉(zhuǎn)換成數(shù)值數(shù)組>>C={[1][234];[5;9][678;101112]}C=[1][1x3double][2x1double][2x3double]>>C(1,1)ans=[1]>>C(2,1)ans=[2x1double]>>M=cell2mat(C)M=123456789101112元胞數(shù)組的刪除要刪除元胞數(shù)組中的行或列,可以用冒號表示單元數(shù)組中的行或列,對其賦空矩陣。刪除后的單元數(shù)組的行或列減一。刪除元胞數(shù)組中元胞的表達(dá)式不能用大括號。刪除元胞數(shù)組的一個單元時,可認(rèn)為元胞的編號是按列計數(shù)的。指定的元胞被刪除后,單元數(shù)組變?yōu)樾惺噶康男问?。元胞?shù)組的刪除>>a={20,'matlab';ones(2,3),1:3}a=[20]'matlab'[2x3double][1x3double]>>a(1,:)=[]a=[2x3double][1x3double]>>a(1,2)=[]???Anullassignmentcanhaveonlyonenon-colonindex.元胞數(shù)組的刪除>>a={20,'matlab';ones(2,3),1:3};>>a{1}=[]a=[]'matlab'[2x3double][1x3double]>>a(1)=[]a=[2x3double]'matlab'[1x3double]>>a(2)=[]a=[2x3double][1x3double]元胞數(shù)組的刪除>>a={20,'matlab';ones(2,3),1:3}a=[20]'matlab'[2x3double][1x3double]>>a(1:2)=[]a='matlab'[1x3double]
1.基本算術(shù)運(yùn)算
MATLAB的基本算術(shù)運(yùn)算有:+(加)、-(減)、*(乘)、/(右除)、\(左除)、^(乘方)。
注意,運(yùn)算是在矩陣意義下進(jìn)行的,單個數(shù)據(jù)的算術(shù)運(yùn)算只是一種特例。
MATLAB運(yùn)算矩陣加減法
C=A+BD=A-B相加減的兩矩陣必須有相同的行和列,兩矩陣對應(yīng)元素相加減;如果A與B的維數(shù)不相同,則MATLAB將給出錯誤信息,提示用戶兩個矩陣的維數(shù)不匹配。允許參與運(yùn)算的兩矩陣之一是標(biāo)量,標(biāo)量與矩陣的所有元素分別進(jìn)行加減操作。
>>a=[1,2;3,4];b=[9,8;7,6];c=a+bc=10101010
矩陣的加減運(yùn)算>>A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16];>>B=[1,sqrt(25),9,132,6,107*23+sin(pi),7,11,154,abs(-8),12,16];>>C=A+B
C=
27121771217221217222717222732>>D=A-BD=0-3-6-930-3-6630-39630>>E=A+3
E=
45678910111213141516171819矩陣乘法若A為n×m矩陣,B為m×r矩陣,則C=A*B為n×r矩陣。各個元素為MATLAB表示
C=A*B對于矩陣乘運(yùn)算,A矩陣的列數(shù)必須等于B矩陣的行數(shù);標(biāo)量可與任何矩陣相乘。>>A=[1,2,3;4,5,6;7,8,9];>>B=[-1,0,1;1,-1,0;0,1,1];>>C1=A*BC1=11411101116>>C2=B*AC2=666-3-3-3111315>>A=[1,2,3;4,5,6];>>B=A*A???Errorusing==>mtimesInnermatrixdimensionsmustagree.矩陣除法矩陣左除\:AX=B,求XMATLAB求解:X=A\B若A為非奇異方陣,則X=A-1B,即inv(A)*B最小二乘解(若A不是方陣)矩陣右除/:XA=B,求XMATLAB求解:X=B/A若A為非奇異方陣,則X=BA-1,即B*inv(A)最小二乘解(若A不是方陣)矩陣除法對于含有標(biāo)量的運(yùn)算,兩種除法運(yùn)算的結(jié)果相同,如3/4和4\3有相同的值,都等于0.75。又如,設(shè)a=[10.5,25],則a/5=5\a=[2.10005.0000]。對于矩陣來說,左除和右除表示兩種不同的除數(shù)矩陣和被除數(shù)矩陣的關(guān)系。對于矩陣運(yùn)算,一般A\B≠B/A。>>A=[1,2,3;4,2,6;7,4,9];>>B=[4,3,2;7,5,1;12,7,92];>>C1=A\BC1=0.5000-0.500044.50001.00000.000046.00000.50001.1667-44.8333>>C2=B/AC2=-0.1667-3.33332.5000-0.8333-7.66675.500012.833363.6667-36.5000
矩陣乘法>>C=A*BC=307011015070174278382110278446614150382614846>>D=A*3D=36912151821242730333639424548矩陣除法左除A\B=inv(A)*B>>A=[8,1,6;3,5,7;4,9,2]A=
816
357
492>>B=[1,1,1;1,2,3;1,3,6]
B=
111123136>>A\Bans=0.06670.05000.09720.06670.30000.63890.06670.0500-0.0694>>C=inv(A)C=
0.1472-0.14440.0639-0.06110.02220.1056-0.01940.1889-0.1028>>C*B
ans=
0.06670.05000.09720.06670.30000.63890.06670.0500-0.0694右除A/B=A*inv(B)>>A/Bans=
27-3112
12
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 30595-2024建筑保溫用擠塑聚苯板(XPS)系統(tǒng)材料
- 建筑工地鋼管租賃合同樣式
- 空調(diào)安裝的承包合同2024年
- 工程設(shè)計合同補(bǔ)充協(xié)議
- 工程建設(shè)貸款合同簽訂范本
- 足浴店承包權(quán)轉(zhuǎn)讓用于還債
- 專業(yè)建筑工程總承包合同案例
- 2024年勞動合同及聲明書
- 教師集體聘用合同書范本
- 合同增加補(bǔ)充協(xié)議范本
- 人教版三年級語文上冊第三、四單元試卷(含答案)
- 歷史丨四川省南充市高2025屆高考適應(yīng)性考試(南充一診)高三10月聯(lián)考?xì)v史試卷及答案
- 浙江省溫州市2023-2024學(xué)年高一上學(xué)期期中考試物理試題(含答案)
- 湖北省武漢市洪山區(qū)2023-2024學(xué)年八年級上學(xué)期期中英語試題(無答案)
- 人教版七年級上冊數(shù)學(xué)期中測試卷(含答案)
- 2024年汽車操作系統(tǒng)趨勢及TOP10分析報告
- 浙江省紹興市諸暨市浣東中學(xué)2022-2023學(xué)年八年級上學(xué)期期中英語試卷
- 2023-2024學(xué)年滬科版數(shù)學(xué)八年級上冊期中測試題附答案(共2套)
- 漢語拼音2《i u ü 》(分層作業(yè))一年級語文上冊同步高效課堂系列(統(tǒng)編版2024秋)
- Unit 4 Autumn (教學(xué)設(shè)計)-2024-2025學(xué)年譯林版(一起)英語二年級上冊
- 全國職業(yè)院校技能大賽高職組(市政管線(道)數(shù)字化施工賽項(xiàng))考試題庫(含答案)
評論
0/150
提交評論