第2章 MATLAB語言基礎(chǔ)_第1頁
第2章 MATLAB語言基礎(chǔ)_第2頁
第2章 MATLAB語言基礎(chǔ)_第3頁
第2章 MATLAB語言基礎(chǔ)_第4頁
第2章 MATLAB語言基礎(chǔ)_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章MATLAB語言基礎(chǔ)

矩陣數(shù)組第2章MATLAB語言基礎(chǔ)

2.1變量及其賦值2.2向量及其運算2.3數(shù)組及其運算2.4矩陣及其運算2.5函數(shù)與表達式2.6MATLAB數(shù)據(jù)類型2.1變量及其賦值2.1.1變量命名規(guī)則變量名只能由字母、數(shù)字和下劃線組成,且必須以字母開頭;變量名區(qū)分字母的大小寫;變量名不能超過最大長度限制(63個字符);關(guān)鍵字不能作為變量名,如for、end和if等;注意:存變量命名時應(yīng)盡量避開MATLAB中預(yù)定義的變量。MATLAB預(yù)定義變量預(yù)定義變量變量的含義ans運算結(jié)果的缺省變量名eps計算機中的最小數(shù)。當某量的絕對值小于eps時,可認為此量為零flops浮點運算數(shù)Inf或inf正無窮大,由零做除數(shù)所引入的常量,如1/0i或j虛數(shù)單位i=j=(-1)1/2NaN或nan表示非數(shù)值,如0/0,inf/inf,0*inf,inf-inf等nargin函數(shù)的輸入變量數(shù)目nargout函數(shù)的輸出變量數(shù)目Realmax或realmax最大正實數(shù)Realmin或realmin最小正實數(shù)pi圓周率2.1.2變量賦值賦值語句的一般形式為:變量=數(shù)據(jù)(或表達式)例子>>a=1,b=2,c=a^2+3*b+1%命令間用逗號間隔,回車后命令窗口顯示為:a=1b=2c=8>>a=1;b=2;c=a^2+3*b+1%前兩條語句加上分號,回車后命令窗口顯示為:c=8%加了分號的語句的運行結(jié)果不再顯示在命令窗口中>>a%但可以通過直接輸入變量名查看變量的取值a=1>>a=4a=4%當變量再次被賦值時,新值代替舊值注意:標點符號必須在英文狀態(tài)下輸入

。2.2向量及其運算2.2.1向量的生成直接輸入法

:生成行向量的格式:向量名=[a1,a2,a3,…]生成列向量的格式:向量名=[a1;a2;a3;…]或?qū)π邢蛄咳∞D(zhuǎn)置:向量名=[a1,a2,a3,…]’冒號表達式法:向量名=a1:step:a2

其中a1為向量的第一個元素,a2為最后一個元素,step為變化步長,省略時,默認為1。例子例2-2直接法生成向量>>a=[1,2,2,3]a=1223例2-3>>a=[1:2:10],b=[1:5]a=13579%注意:用冒號表達式法生成向量時,最后一個元素不一定是a2b=12345組合法

:一個向量和數(shù)值或另一向量(同為行或列向量)組合在一起,構(gòu)成一個新的向量

。linspace()函數(shù)或logspace()函數(shù)生成向量法:linspace(a,b,n):產(chǎn)生首尾元素分別為a和b,長度為n的等差行向量。當n省略時,默認n=100。logspace(a,b,n):產(chǎn)生首尾元素分別為10a和10b,長度為n的對數(shù)等分行向量。當n省略時,默認n=50;當b=pi時,在[10api]區(qū)間產(chǎn)生長度為n的對數(shù)等分行向量。同維向量的加減

數(shù)與向量的加減乘除(/)

向量的點積點積運算函數(shù)dot(A,B):維數(shù)相同的向量A和B各對應(yīng)位置上元素相乘后的和,其結(jié)果是一個標量。即若向量A=(a1,a2,a3),向量B=(b1,b2,b3),(A·B)=a1b1+a2b2+a3b3

2.2.2向量的運算向量的叉積叉積運算函數(shù)cross(A,B)。結(jié)果是一個過兩向量交點且垂直于兩個向量所在平面的向量。即若向量A=(a1,a2,a3),向量B=(b1,b2,b3),(A×B)=(a2b3-b2a3,a3b1-a1b3,a1b2-a2b1)。叉積運算要求A和B必須是三元素的向量

向量的混合積運算格式為dot(A,cross(B,C)):是指先叉乘后再點乘2.2.2向量的運算>>a=[123];b=4:6;c=linspace(7,10,4);d=[146];>>d=a+b,e=a-cd=579???Errorusing==>minusMatrixdimensionsmustagree.%表明e=a-c運算中a與c的維數(shù)不同,使運算出錯>>f=a+1,g=b-1f=234g=345>>h=3*a,k=4*b'h=369k=162024>>dot(a,b)ans=32>>cross(a,b)ans=-36-3>>dot(a,cross(b,d))ans=01-3.如何在幫助窗口、幫助命令、幫助演示中查找plot的相關(guān)指令和演示程序?2-2.生成兩個四維向量(10-23)和(0121),計算它們的和、點積。3.比較logspace(a,b,n)命令在參數(shù)a、b位置處采用pi的區(qū)別上機練習:4.比較數(shù)與向量之間“/”、”\”的區(qū)別5.思考如何求兩個向量之間的夾角數(shù)組和矩陣的有關(guān)知識2011.5.132.3數(shù)組及其運算2.3.1數(shù)組的創(chuàng)建直接輸入法整個數(shù)組放在“[]”內(nèi);數(shù)組元素以逗號或空格隔開;行與行之間用分號或回車鍵隔開;行內(nèi)元素也可采用冒號表達式法生成。

如果數(shù)組中的元素都是復(fù)數(shù),也可以先產(chǎn)生實部和虛部的數(shù)組,然后再將實部數(shù)組+虛數(shù)單位*虛部數(shù)組,得到復(fù)數(shù)數(shù)組。函數(shù)法函數(shù)法

函數(shù)語法說明eyeeye(n);eye(m,n);生成單位數(shù)組onesones(n);ones(m,n);生成元素全為1的數(shù)組randrand(n);rand(m,n);生成均勻分布的隨機數(shù)組randnrandn(n);randn(m,n);生成正態(tài)分布的隨機數(shù)組zeroszeros(n);zeros(m,n);生成全零數(shù)組catcat(dim,A,B)按指定維方向串接數(shù)組diagdiag(v);diag(v,k);diag(A);diag(A,k);求對角線元素或?qū)蔷仃噁lipudflipud(A)以數(shù)組水平中線為對稱軸,交換上下對稱位置上的數(shù)組元素fliplrfliplr(A)以數(shù)組垂直中線為對稱軸,交換左右對稱位置上的數(shù)組元素repmatrepmat(A,m,n)按指定維上的數(shù)目復(fù)制數(shù)組reshapereshape(A,m,n)按指定的行和列重新排列數(shù)組rot90rot90(A);rot90(A,k)逆時針旋轉(zhuǎn)數(shù)組90度的整數(shù)倍triltril(A);tril(A,k);提取數(shù)組下三角部分,生成下三角矩陣triutriu(A);triu(A,k);提取數(shù)組上三角部分,生成上三角矩陣例:直接輸入法創(chuàng)建數(shù)組>>A=[1234;5678],B=[12+i3i4],C=[9:12;1:2:521],D=A+i*CA=12345678B=1.00002.0000+1.0000i0+3.0000i4.0000C=910111213521D=1.0000+9.0000i2.0000+10.0000i3.0000+11.0000i4.0000+12.0000i5.0000+1.0000i6.0000+3.0000i7.0000+5.0000i8.0000+21.0000i找出需要被操作的元素。A(r,c):表示數(shù)組A的第r行第c列的元素。A(r,:):表示數(shù)組A的第r行元素。A(:,c):表示數(shù)組A的第c列的元素。A(s):把數(shù)組A的所有列按先左后右的次序,首尾連接成一個序列后,由上到下的第s個元素。注意:MATLAB是按照列的先后順序存放的。2.3.2數(shù)組的尋址例:數(shù)組的尋址>>A=randn(3,4),a=A(1,3),b=A(2,:),c=(A(:,3))',d=A(10)A=-1.3362-0.6918-1.5937-0.39990.71430.8580-1.44100.69001.62361.25400.57110.8156a=-1.5937b=0.71430.8580-1.44100.6900c=-1.5937-1.44100.5711d=-0.3999主要包括加(+)、減(-)、乘(.*)、除(./和.\)、冪運算(.^)、指數(shù)運算(exp)、對數(shù)運算(log)和開方運算(sqrt)等。

2.3.3數(shù)組的代數(shù)運算例:數(shù)組的代數(shù)運算>>A=[123;456];B=[134;256];>>E=A.*B,F=A./B,H=A.^2,I=exp(A),K=sqrt(A)E=161282536F=1.00000.66670.75002.00001.00001.0000H=149162536I=2.71837.389120.085554.5982148.4132403.4288K=1.00001.41421.73212.00002.23612.4495按元素來比較相同規(guī)格數(shù)組(行、列數(shù)相同)或比較數(shù)組與標量。運算符函數(shù)說明運算符函數(shù)說明<lt小于>=ge大于或等于<=le小于或等于==eq等于>gt大于~=ne不等于2.3.4數(shù)組的關(guān)系運算

例:數(shù)組的關(guān)系運算>>A=[13;20];B=[42;2-1];C=(A>B),D=le(A,B),E=(A~=B)C=0101D=1010E=1101邏輯運算相應(yīng)的邏輯運算函數(shù)邏輯運算符說明與and&能實現(xiàn)所有的邏輯與運算數(shù)組對應(yīng)元素或兩標量同為非零時返回1;否則返回0&&只能用于標量之間或or|能實現(xiàn)所有的邏輯或運算數(shù)組對應(yīng)元素或兩標量同為零時返回0;否則返回1||只能用于標量之間非not~實現(xiàn)所有的非運算數(shù)組元素或標量為非零時返回0,否則返回1異或xor沒有相應(yīng)的運算符數(shù)組對應(yīng)元素或兩標量只有一個非零時返回1,否則返回02.3.5數(shù)組的邏輯運算例:數(shù)組的邏輯運算>>A=[100;234];B=[013;012];C=A&B,D=or(A,B),E=~(A)C=000011D=111111E=0110002.4矩陣及其運算

2.4.1矩陣創(chuàng)建直接法函數(shù)法變換法

函數(shù)語法說明hadamardhadamard(n)生成n階hadamard矩陣,其中n滿足rem(n,4)=0。hankelhankel(c);hankel(c,r);生成第一行和第一列都為c,或第一列為c和最后一行為r的hankel矩陣hilbhilb(n)生成n階hilbert矩陣invhilbinhilb(n)生成n階逆hilbert矩陣magicmagic(n)生成n階魔方矩陣,其中n>0且n≠2pascalpascal(n);pascal(n,1);pascal(n,2)生成滿足指定要求的n階pascal矩陣toeplitztoeplitz(r);toeplitz(c,r)生成第一行和第一列都是r,或第一列為c和第一行為r的toeplitz矩陣wilkinsonwilkinson(n)生成n階J.H.Wilkinson's特征值測試矩陣特殊矩陣生成函數(shù)知識概要:復(fù)數(shù)數(shù)組(或矩陣)的創(chuàng)建方法函數(shù)法生成特殊數(shù)組(或矩陣)函數(shù)zeros、ones、eyes、rand、randn、magic、hadamard;diag、reshape、flipud、fliplr、(cat)數(shù)組(或矩陣)元素的訪問方式數(shù)組的代數(shù)運算、關(guān)系運算、邏輯運算2-3.生成一個4×4的正態(tài)分布隨機數(shù)組,求其對角線元素的和,并將該數(shù)組變換成2×8的數(shù)組。上機練習二:1、求向量(100)和向量(2.52.50)之間的夾角c2-1.定義變量a為二階全零陣,訪問其第一行第二列的元素,并將值修改為2。2、使用help命令查找diag(A,k)命令結(jié)果6、查找rem和mod函數(shù)的區(qū)別2-4.生成一個3×5的均勻分布隨機數(shù)組,將其第4列元素加0.2,并將數(shù)組元素與0.5比較大小。矩陣運算和MATLAB數(shù)據(jù)類型矩陣加、減(+,-)運算規(guī)則:相加、減的兩矩陣必須有相同的行和列兩矩陣對應(yīng)元素相加減。允許參與運算的兩矩陣之一是標量。標量與矩陣的所有元素分別進行加減操作。2.4.2矩陣的運算2.矩陣乘()運算規(guī)則:A矩陣的列數(shù)必須等于B矩陣的行數(shù)標量可與任何矩陣相乘。a=[123;456;780];b=[1;2;3];c=a*bc=143223

d=[-1;0;2];f=pi*df=-3.141606.2832

矩陣的除法

左除A\B=inv(A)*B,是方程Ax=B的解;右除A/B=A*inv(B),是方程xB=A的解。矩陣的乘方和開方乘方利用符號“^”實現(xiàn),開方利用函數(shù)sqrtm實現(xiàn)

矩陣的指數(shù)和對數(shù)expm、logminv——矩陣求逆det——行列式的值eig——矩陣的特征值[x,lamda]=eig(A)rank——矩陣的秩trace——矩陣的跡’——矩陣的共軛轉(zhuǎn)置5.矩陣的其它運算6.矩陣的一些特殊操作矩陣的變維

a=[1:12];b=reshape(a,3,4)c=zeros(3,4);c(:)=a(:)矩陣的變向

rot90:旋轉(zhuǎn);fliplr:左右翻;flipud:上下翻矩陣的抽取

tril:抽取主下三角;triu:抽取主上三角矩陣的擴充和收縮>>A=[135;246;1-4-8]>>a=det(A)a=-2>>B=A'B=12134-456-8>>C=inv(A)C=4.0000-2.00001.0000-11.00006.5000-2.00006.0000-3.50001.0000>>r=rank(A)r=3>>d=trace(A)d=3>>[x,lamda]=eig(A)x=-0.5101-0.2904-0.3914-0.82500.8430-0.39760.2433-0.45280.8299lamda=3.46720000.0880000-6.5552數(shù)學(xué)函數(shù)

類型函數(shù)含義類型函數(shù)含義三角函數(shù)sin正弦復(fù)數(shù)函數(shù)abs絕對值和復(fù)數(shù)模asin反正弦angle復(fù)數(shù)的相角cos余弦real復(fù)數(shù)的實部acos反余弦imag復(fù)數(shù)的虛部tan正切conj求共軛復(fù)數(shù)atan反正切complex構(gòu)造復(fù)數(shù)cot余切isreal判斷實數(shù)acot反余切指數(shù)函數(shù)exp以e為底的指數(shù)sec正割log自然對數(shù)asec反正割log2以2為底的對數(shù)csc余割log10以10為底的對數(shù)acsc反余割pow22的冪取整函數(shù)ceil+∞取整sqrt平方根floor-∞取整求余函數(shù)mod模除求余fix向0取整rem求余數(shù)round四舍五入為整數(shù)其它lcm求最小公倍數(shù)sign符號函數(shù)gcd求最大公約數(shù)名稱標點作用空格分隔輸入量;分隔同行數(shù)組元素逗號,作為要顯示結(jié)果的指令的結(jié)尾;分隔同行數(shù)組元素分號;作為不顯示結(jié)果的指令的結(jié)尾;分隔數(shù)組的行冒號:用作生成向量;用作下標時表示該維上的所有元素注釋號%其后內(nèi)容為注釋單引號‘’標識字符和字符串圓括號()訪問數(shù)組元素時用方括號[]輸入數(shù)組時用花括號{}用作細胞數(shù)組標識續(xù)行號…長指令分成兩行或多行輸入時的標識符號的作用逗號和分號的作用

逗號和分號可作為指令間的分隔符,matlab允許多條語句在同一行出現(xiàn)。

分號如果出現(xiàn)在指令后,屏幕上不顯示結(jié)果。注意:只要是賦過值的變量,不管是否在屏幕上顯示,都存儲在工作空間中,以后可隨時顯示或調(diào)用。變量名盡可能不要重復(fù),否則會覆蓋。當一個指令或矩陣太長時,可用???續(xù)行。冒號的作用

用于生成等間隔的向量,默認間隔1。用于選出矩陣指定行、列及元素。循環(huán)語句2.5函數(shù)與表達式函數(shù)——系統(tǒng)內(nèi)部函數(shù)和用戶自定義函數(shù)

2.5函數(shù)與表達式表達式(按照優(yōu)先級的先后順序執(zhí)行;如果優(yōu)先級相同,要按先左后右的順序執(zhí)行。)括號()共軛轉(zhuǎn)置’、轉(zhuǎn)置.'、矩陣乘方^、數(shù)組乘方.^代數(shù)+、代數(shù)-、邏輯非~矩陣乘*、矩陣左除\、矩陣右除/、數(shù)組乘.*、數(shù)組左除.\、數(shù)組右除./加+、減-冒號運算符:小于<、小于等于<=、大于>、大于等于>=、等于==、不等于~=邏輯與&邏輯或|標量與&&標量或||2.6MATLAB數(shù)據(jù)類型2.6.1基本數(shù)據(jù)類型數(shù)值型整數(shù):有符號整數(shù)(int)無符號整數(shù)(uint)。浮點數(shù):單精度浮點數(shù)(float)雙精度浮點數(shù)(double)。默認的數(shù)據(jù)類型是雙精度浮點數(shù)。

MATLAB的整數(shù)類型數(shù)據(jù)類型取值范圍轉(zhuǎn)換函數(shù)有符號8位整數(shù)[-2727-1]int8有符號16位整數(shù)[-215215-1]int16有符號32位整數(shù)[-231231-1]int32有符號64位整數(shù)[-263263-1]int64無符號8位整數(shù)[028-1]uint8無符號16位整數(shù)[0216-1]uint16無符號32位整數(shù)[0232-1]uint32無符號64位整數(shù)[0264-1]uint64注意:整數(shù)數(shù)據(jù)之間進行運算,必須保證它們具有相同的類型

與數(shù)值型數(shù)據(jù)類型有關(guān)的函數(shù)函數(shù)功能語法who顯示當前工作空間中所有內(nèi)存變量的名稱whowhos顯示變量的維數(shù)、字節(jié)數(shù)和數(shù)據(jù)類型whos變量名class顯示變量的數(shù)據(jù)類型class(變量名)isinteger驗證變量是否為整數(shù),結(jié)果返回1或0isinteger(變量)intmax查詢不同整型所能表示的最大整數(shù)intmax('整型數(shù)據(jù)類型名')intmin查詢不同整型所能表示的最小整數(shù)intmin('整型數(shù)據(jù)類型名')isnumeric驗證變量是否為數(shù)值型isnumeric(變量)double將數(shù)據(jù)轉(zhuǎn)換成雙精度浮點型double(變量)single將數(shù)據(jù)轉(zhuǎn)換成單精度浮點型single(變量)isfloat驗證變量是否為浮點型isfloat(變量)isa驗證輸入變量是否為指定的數(shù)據(jù)類型isa(變量,‘數(shù)據(jù)類型’)realmax查詢單精度和雙精度所能表示的最大浮點數(shù)realmax('double'或'single')realmin查詢單精度和雙精度所能表示的最小浮點數(shù)realmin('double'或'single')例:數(shù)值型數(shù)據(jù)類型的轉(zhuǎn)換>>a=123.4,b=int8(a),c1=isinteger(a),c2=isnumeric(a),d=double(b),e=single(d),f=isa(e,'dou...ble')運算結(jié)果為a=123.4000,b=123,c1=0,c2=1,d=123,e=123,f=0>>whosNameSizeBytesClassa1x18doublearrayb1x11int8arrayc11x11logicalarrayc21x11logicalarrayd1x18doublearraye1x14singlearrayf1x11logicalarray>>class(a),class(b),m1=intmax,m2=intmin('int64'),m3=realmax('single'),m4=realmin('double')運算結(jié)果為double,int8,m1=2147483647,m2=-9223372036854775808,m3=3.4028e+038,m4=2.2251e-308。函數(shù)size(x)可以查詢變量x的尺寸;比如說一個A是一個3×4的二維矩陣:size(A)%直接顯示出A大小輸出:ans=34s=size(A)%返回一個行向量s,s的第一個元素是矩陣的行數(shù),第二個元素是矩陣的列數(shù)輸出:s=34[r,c]=size(A)%將矩陣A的行數(shù)返回到第一個輸出變量r,將矩陣的列數(shù)返回到第二個輸出變量c

輸出:r=3c=4其它有關(guān)函數(shù)[r,c,m]=size(A)輸出:r=3c=4m=1也就說它把二維矩陣當作第三維為1的三維矩陣,當a是一個n維行向量時,size(A)把其當成一個1×n的矩陣,因此size(a)的結(jié)果是

ans1nsize(A,n)n=1或2,則size將返回矩陣的行數(shù)或列數(shù)。其中r=size(A,1)該語句返回的是矩陣A的行數(shù),

c=size(A,2)該語句返回的是矩陣A的列數(shù)函數(shù)length(x)如果x為非空數(shù)組,返回行數(shù)和列數(shù)兩者之間數(shù)值較大的那一個值,即相當于執(zhí)行了max(size(x));如果x為空數(shù)組,則返回0;如果x是一個向量則返回x的長度。函數(shù)size(x)可以查詢變量x的尺寸;函數(shù)length(x)相當于max(size(x)),返回各維中維數(shù)最大的數(shù)值;函數(shù)ndims(x)返回變量的維數(shù),相當于length(size(x));函數(shù)nnz(x)返回x中非零元素的個數(shù);函數(shù)nonzeros(x)返回一個由x的非零元素構(gòu)成的列向量,即length(nonzeros(x))=nnz(x)。其中x可以各種類型量。其它有關(guān)函數(shù)例:查詢變量的尺寸>>size(randn(2,3))%返回隨機矩陣的尺寸ans=23>>[a,b]=size(randn(1,3))%將隨機矩陣的行值賦給變量a,列值賦給變量ba=1b=3>>size(randn(3,4),1)%返回指定維上隨機矩陣的尺寸ans=3>>length(randn(3,4))%返回隨機矩陣各維中最大的值ans=4>>ndims(randn(3,4))%返回隨機矩陣的維數(shù)ans=2>>A=[1201;0-102]>>nnz(A)%返回A中非零元素的個數(shù)ans=5>>nonzeros(A)%返回A中的非零元素ans=12-112函數(shù)logical:將其它類型數(shù)組轉(zhuǎn)換成邏輯類型數(shù)組,其中非零元素為真,零元素為假;函數(shù)true:產(chǎn)生指定維數(shù)的邏輯真值數(shù)組;函數(shù)false:產(chǎn)生指定維數(shù)的邏輯假值數(shù)組。函數(shù)islogical:判別數(shù)據(jù)是否是邏輯型的。邏輯型例:邏輯型數(shù)據(jù)的有關(guān)運算>>A=randint(2,3),B=logical(A),C=true(size(A)),D=false(2,3)A=111001B=111001C=111111D=000000>>a=true,b=flase,c=islogical(A),d=islogical(B)結(jié)果顯示a=1,b=0,c=0,d=1>>whosBNameSizeBytesClassB2x36logicalarrayGrandtotalis6elementsusing6bytes可見邏輯型數(shù)組的每一元素占用1個字節(jié)2.6.2字符串字符串的定義直接輸入法冒號表達式法組合法函數(shù)法注意:若字符串中存在單引號,需要在輸入字符串內(nèi)容時,連續(xù)輸入兩個單引號。

例:生成字符串>>str1='HeibeiUniversity',str2=['of','','Science','','and','','T','e','c','h','n','o','l','o','g','y']%直接輸入法str1=HeibeiUniversitystr2=ofScienceandTechnology>>str=[str1,'',str2]%組合法HeibeiUniversityofScienceandTechnology>>str3='Don''tyou?'%字符串中有單引號str3=Don’tyou?>>str4=['a':2:'z']%冒號表達式法str4=acegikmoqsuwy>>str5=char('MATLAB','基礎(chǔ)','與應(yīng)用')%函數(shù)法str5=MATLAB基礎(chǔ)與應(yīng)用查詢字符串的長度函數(shù)size:以向量的形式返回各維的維數(shù);函數(shù)length:返回各維中維數(shù)最大的數(shù)值。例:查詢上例中字符串str的長度>>a1=size(str),a2=length(str)a=143a2=43字符串的操作字符串的水平合并:將字符串依次放在“[]”中,并用空格或逗號隔開;調(diào)用函數(shù)strcat。字符串的垂直合并:將字符串依次放在“[]”中,并用分號隔開,如長度不等,必須用空格補齊。調(diào)用函數(shù)strvcat。字符串操作函數(shù)表函數(shù)功能ischar判別變量是否是字符型blanks(n)返回包含有n個空格的字符串deblank(str)刪除字符串中的空格findstr(str1,str2)在str1中查找str2lower(str)轉(zhuǎn)換成小寫upper(str)轉(zhuǎn)換成大寫strcmp(str1,str2)比較str1和str2,相等返回1,不等返回0strrep(str1,str2,str3)用str3替代str1中所有的str2strcmpi(str1,str2)忽略大小寫比較str1和str2strncmpi(str1,str2,n)比較str1和str2的前n個字符strmatch(str1,str2)從str2的各行中查詢以str1開頭的行號strjust(str,’style’)str按style(取left、right或center)進行左對齊、右對齊或居中strtok(str)返回str中第一個分隔符(空格、回車或tab鍵)前的部分例:字符串間的操作>>str1='GoodMorning';…str2='GoodMorning,…Sir';str3='GoodAfternoon';>>s1=deblank(str1),s2=findstr(str2,str1),s3=findstr(str2,s1),…s4=lower(s1),s5=upper(str3)s1=GoodMornings2=[]s3=1s4=goodmornings5=GOODAFTERNOON>>s6=strcmp(str1,s1),…s7=strncmpi(str1,s1,12),…s8=strrep(str2,s1,str3),…s9=strmatch(s1,str2)s6=0s7=1s8=GoodAfternoon,Sirs9=1>>s10=strjust(str1,'center')s10=GoodMorning>>s11=strjust(str1,'right')s11=GoodMorning>>s12=strjust(str1,'left')s12=GoodMorning字符串與數(shù)值數(shù)組的轉(zhuǎn)換

字符型轉(zhuǎn)換函數(shù)

函數(shù)功能用法abs字符串轉(zhuǎn)換成ASCII碼abs(字符串)double字符串轉(zhuǎn)換成ASCII碼double(字符串)char通過ASCII碼把任意類型數(shù)據(jù)轉(zhuǎn)換成字符串char(數(shù)據(jù)量)num2str將非整數(shù)數(shù)組轉(zhuǎn)換成字符串num2str(數(shù)值數(shù)組,有效數(shù)位)int2str將整數(shù)數(shù)組轉(zhuǎn)換成字符串int2str(整數(shù)數(shù)組)mat2str將數(shù)值數(shù)組轉(zhuǎn)換成字符行向量mat2str(數(shù)值數(shù)組,有效數(shù)位)str2num將字符數(shù)組轉(zhuǎn)換成數(shù)值數(shù)據(jù)str2num(字符數(shù)組)例:字符串與其它類型數(shù)組的轉(zhuǎn)換>>str1='HeibeiUniversity';>>b=abs(str1),c=double(str1),d=char(b)b=Columns1through972101105981011053285110Columns10through17105118101114115105116121c=Columns1through972101105981011053285110Columns10through17105118101114115105116121d=HeibeiUniversity>>A=randn(2,4),B=int2str(A),C=num2str(A,4),D=mat2str(A,3),E=str2num(D);A=-0.69181.2540-1.4410-0.39990.8580-1.59370.57110.6900B=-11-101-211C=-0.69181.254-1.441-0.39990.858-1.5940.57110.69D=[-0.6921.25-1.44-0.4;0.858-1.590.5710.69]E=-0.69201.2500-1.4400-0.40000.8580-1.59000.57100.6900>>class(A),class(B),class(C),class(D),class(E)得到結(jié)果依次是double、char、char、char和double。細胞數(shù)組的創(chuàng)建

用花括號{}直接賦值生成細胞數(shù)組

:例:>>a={'hisscore','MATLAB',90,['筆試45';'上機45']}a='hisscore''MATLAB'[90][2x4char]注意:對于內(nèi)容較多的細胞,顯示的是細胞的字節(jié)數(shù)和數(shù)據(jù)類型。函數(shù)cell創(chuàng)建細胞數(shù)組

,調(diào)用格式為:cell(m,n)

2.6.3細胞數(shù)組細胞數(shù)組的基本元素是細胞(cell),每個細胞可以存儲不同類型、不同維數(shù)的數(shù)據(jù).>>a=cell(2);a{1,1}='class1';a{1,2}='no…0823101';a{2,1}='namemary';a{2,2}=['English85';'Computer90']a='class1''no0823101‘

'namemary'[2x11char]細胞數(shù)組的訪問圓括號訪問:得到的數(shù)據(jù)仍然是細胞數(shù)組;花括號訪問:得到的是細胞元素的內(nèi)容,是字符型的。

例:對上例中創(chuàng)建的細胞數(shù)組a進行訪問>>b=a(2,2)%圓括號訪問b=[2x11char]>>class(b)ans=cell%b為細胞型>>c=a{2,2}%花括號訪問c=English85Computer90>>class(c)ans=char%c為字符型

細胞數(shù)組的擴充、收縮和重組例:對上例中的細胞數(shù)組a進行擴充、收縮和重組>>a{1,3}=[],a{3,1}='age20'%擴充a='class1''no0823101'[]'namemary'[2x11char][]'age20'[][]>>a(:,2)=[]%收縮a='class1'[]'namemary'[]'age20'[]>>reshape(a,2,3)%重組ans='class1''age20'[]'namemary'[][]細胞數(shù)組的其它操作MATLAB提供的主要細胞數(shù)組運算函數(shù)

函數(shù)功能celldisp(c)顯示細胞數(shù)組c的內(nèi)容cellplot(c)顯示細胞數(shù)組c的結(jié)構(gòu)圖iscell(c)查詢c是否是細胞數(shù)組iscellstr(c)查詢c是否是字符型細胞數(shù)組cellfun應(yīng)用于細胞數(shù)組中的各個細胞元素cellstr(s)用字符數(shù)組s的的行向量作為細胞構(gòu)成細胞數(shù)組char(c)細胞數(shù)組c中的細胞作為行向量構(gòu)成字符數(shù)組mat2cell(A,m,n)將普通數(shù)組A按照指定的m和n參數(shù)轉(zhuǎn)換成細胞數(shù)組cell2mat(c)將細胞數(shù)組c轉(zhuǎn)換成普通數(shù)組num2cell(A,dim)將數(shù)組數(shù)組A按照指定維方向dim(1是行、2是行、3是頁,并且3種方向還可以組合起來,如[1,2],dim缺省時,把數(shù)組的每一元素都轉(zhuǎn)化成細胞數(shù)組的一個細胞)轉(zhuǎn)換成細胞數(shù)組例:細胞數(shù)組的相關(guān)運算>>A={randn(2,2),'randomnumber',2;i,pi,eye(3)}%產(chǎn)生細胞數(shù)組AA=[2x2double]'randomnumber'[2][0+1.0000i][3.1416][3x3double]>>celldisp(A)%顯示細胞數(shù)組AA{1,1}=-1.14651.18921.1909-0.0376A{2,1}=0+1.0000iA{1,2}=randomnumberA{2,2}=3.1416A{1,3}=2A{2,3}=

100010001>>cellplot(A)%顯示細胞數(shù)組A的結(jié)構(gòu)圖>>iscell(A)%判別A是否是細胞型ans=1>>iscellstr(A)%判別A是否是字符細胞型ans=0>>B=cellfun('length',A),B=2131113>>A={'Englishis','a','very

important','language'}%重新創(chuàng)建細胞數(shù)組AA='Englishis''a''veryimportant''language'>>B=char(A)%將A轉(zhuǎn)換成字符數(shù)組BB=Englishisaveryimportantlanguage>>C=cellstr(B)%將B轉(zhuǎn)換成細胞數(shù)組CC='Englishis''a''veryimportant''language'>>x=[1:5;6:10;11:15];%產(chǎn)生數(shù)值數(shù)組x>>D=mat2cell(x,[21],[2,3]);%將x按普通數(shù)組轉(zhuǎn)換成細胞數(shù)組D>>celldisp(D)D{1,1}=1267D{2,1}=1112D{1,2}=3458910D{2,2}=131415>>E=cell2mat(D(:,2))%將D的第二列元素轉(zhuǎn)換成普通數(shù)組E=3458910131415F=num2cell(x)%將數(shù)值數(shù)組x轉(zhuǎn)換成細胞數(shù)組FF=[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15]>>G1=num2cell(x,1)G1=[3x1double][3x1double][3x1double][3x1double][3x1double]>>G2=num2cell(x,2)G2=[1x5double][1x5double][1x5double]>>G3=num2cell(x,3)G3=[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15]>>G4=num2cell(x,[1,2]),celldisp(G4)G4=[3x5double]G4{1}=1234567891011121314152.6.4結(jié)構(gòu)數(shù)組如學(xué)生的基本信息可用一個結(jié)構(gòu)數(shù)組來表示

student.number(學(xué)號)‘0901001’.name(姓名)‘李麗’.sex(性別)‘女’.age(年齡)‘19’.class(班級)‘01’.department(所在系)‘09’student是結(jié)構(gòu)名;第2列為結(jié)構(gòu)數(shù)組的元素---稱為域名,結(jié)構(gòu)名與域名間用“.”間隔,各個域可以具有不同的維數(shù)、不同的類型。最后一列是結(jié)構(gòu)數(shù)組元素的內(nèi)容。結(jié)構(gòu)數(shù)組的創(chuàng)建直接法例:創(chuàng)建上表所示的student結(jié)構(gòu)。>>student.number='0901001';>>='李麗';>>student.sex='女';>>student.age='19';>>student.class='01';>>student.department='09';>>studentstudent=number:'0901001'name:'李麗'sex:'女'age:'19'class:'01'department:'09'>>whosstudentNameSizeBytesClassstudent1x1776structarray%student為1×1的結(jié)構(gòu)數(shù)組Grandtotalis22elementsusing776bytes>>student(2).number='0901002';%student擴充為1×2的結(jié)構(gòu)數(shù)組>>student(2).institute='xinxi';%向student增加一個新的域>>studentstudent=1x2structarraywithfields:numbernamesexageclassdepartmentinstitute函數(shù)法(struct函數(shù))基本格式:struct_name=struct(‘field1’,value1,‘field2’,value2,…)struct_name=struct(‘field1’,{value1},‘field2’,{value2},…)>>student=struct(‘number’,’0901001’,’name’,’李麗’,’sex’,’女’,’age’,’19’,’class’,’01’,…'department',...'09');student1=number:'0901001'name:'李麗'sex:'女'age:'19'class:'01'department:'09'注意:如果域沒有值,創(chuàng)建時一定要賦空值;多個元素域值相同時,可以賦值一次。>>student1=struct('number',{'0901001','0901002'},'name',{'李麗',[]},'sex','女',…'age',...{'19','20'},'class',{'01',[]},'score',{rand(2,5)*100})student1=1x2structarraywithfields:numbernamesexageclassscore結(jié)構(gòu)數(shù)組的訪問

例:訪問上例中所創(chuàng)建的student1結(jié)構(gòu)數(shù)組。>>student1(1)%訪問結(jié)構(gòu)數(shù)組的指定元素ans=number:'0901001'name:'李麗'sex:'女'age:'19'class:'01'score:[2x5double]>>student1.number%訪問結(jié)構(gòu)數(shù)組所有元素的指定域ans=0901001ans=0901002>>student1(2).score%訪問結(jié)構(gòu)數(shù)組中指定元素的指定域ans=19.343130.276415.087337.837385.365568.222354.167469.789886.001259.3563>>student1(2).score(2,2)%訪問數(shù)組中指定元素的指定域的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論