




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章Matlab基本數(shù)據(jù)類型及運(yùn)算主要內(nèi)容概述變量和常量基本數(shù)值類型字符串結(jié)構(gòu)體基本運(yùn)算2.1概述基本數(shù)據(jù)類型數(shù)值數(shù)據(jù):雙精度型、單精度數(shù)、帶符號(hào)整數(shù)和無符號(hào)整數(shù)邏輯類型字符數(shù)據(jù)結(jié)構(gòu)(Structure)、單元(Cell)多維矩陣、稀疏矩陣(Sparse)矩陣是MATLAB最基本、最重要的數(shù)據(jù)對(duì)象。單個(gè)數(shù)據(jù)可以看成是矩陣的特例。2.2變量和常量變量的命名在MATLAB中,變量名是以字母開頭,后接字母、數(shù)字或下劃線的字符序列,最多19個(gè)字符。在MATLAB中,變量名區(qū)分字母的大小寫。賦值語句變量=表達(dá)式表達(dá)式變量的顯示一般地,運(yùn)算結(jié)果在命令窗口中顯示出來。如果在語句的最后加分號(hào),那么,MATLAB僅僅執(zhí)行賦值操作,不再顯示運(yùn)算的結(jié)果。在MATLAB語句后面可以加上注釋,注釋以%開頭,后面是注釋的內(nèi)容。變量和常量例2.1
計(jì)算表達(dá)式的值,并將結(jié)果賦給變量x,然后顯示出結(jié)果。數(shù)據(jù)的輸出格式可以用format命令設(shè)置或改變數(shù)據(jù)輸出格式。format命令的格式為:format格式符format命令只影響數(shù)據(jù)輸出格式,而不影響數(shù)據(jù)的計(jì)算和存儲(chǔ)。>>x=2+sin(pi/180)x=2.0175>>%計(jì)算表達(dá)式的值變量和常量?jī)?nèi)存變量的管理顯示:who和whos這兩個(gè)命令用于顯示在MATLAB工作空間中已經(jīng)駐留的變量名清單。>>A=1A=1>>whoYourvariablesare:A>>whosNameSizeBytesClassAttributesA1x18double變量和常量刪除:clear命令用于刪除MATLAB工作空間中的變量。內(nèi)存變量文件:利用MAT文件(.mat)可以把當(dāng)前MATLAB工作空間中的一些有用變量長(zhǎng)久地保留下來。MAT文件的生成和裝入由save和load命令來完成。常用格式為:
save文件名[變量名表][-append][-ascii]
load文件名[變量名表][-ascii]
變量和常量常量常量說明ans最近運(yùn)算的結(jié)果eps浮點(diǎn)數(shù)相對(duì)精度,定義為1.0到最近浮點(diǎn)數(shù)的距離realmaxMATLAB能表示的實(shí)數(shù)的最大絕對(duì)值realminMATLAB能表示的實(shí)數(shù)的最小絕對(duì)值pi圓周率的近似值3.1415926i,j復(fù)數(shù)的虛部數(shù)據(jù)最小單位inf
或Inf表示正無大,定義為1/0NaN或nan非數(shù),它產(chǎn)生于0×
,0/0,
/
等運(yùn)算變量和常量eps、realmax、realmin
三個(gè)常量具體的數(shù)值與運(yùn)行MATLAB的計(jì)算機(jī)相關(guān),不同的計(jì)算機(jī)系統(tǒng)可能具有不同的數(shù)值
>>epsans=2.2204e-016>>realmaxans=1.7977e+308>>realminans=2.2251e-308變量和常量常量數(shù)值可以修改
>>pi=100pi=100>>clear>>pians=3.1416變量和常量Inf,NaNInf,NaN可用于計(jì)算,計(jì)算結(jié)果可能為inf或NaN。進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí),Inf將獲取相應(yīng)數(shù)據(jù)類型的最大值,NaN返回相應(yīng)整數(shù)數(shù)據(jù)類型的數(shù)值0,浮點(diǎn)數(shù)類型則仍然為NaN例:NaN和Inf運(yùn)算示例
>>A=Inf;>>class(A)ans=
Double>>B=int16(A)B=
327672.3基本數(shù)值類型數(shù)據(jù)類型說明字節(jié)數(shù)double雙精度數(shù)據(jù)類型8single單精度數(shù)據(jù)類型4uint8無符號(hào)8位整數(shù)1uint16無符號(hào)16位整數(shù)2uint32無符號(hào)32位整數(shù)4uint64無符號(hào)64位整數(shù)8int8有符號(hào)8位整數(shù)1int16有符號(hào)16位整數(shù)2int32有符號(hào)32位整數(shù)4int64有符號(hào)64位整數(shù)8基本數(shù)值類型MATLAB和C語言在處理數(shù)據(jù)類型和變量時(shí)的區(qū)別在C語言中,任何變量在使用之前必須聲明,然后賦值,在聲明變量時(shí)就指定了變量的數(shù)據(jù)類型在MATLAB中,任何數(shù)據(jù)變量都不需要預(yù)先聲明,MATLAB將自動(dòng)地將數(shù)據(jù)類型設(shè)置為雙精度類型基本數(shù)值類型class函數(shù)可以用來獲取變量或?qū)ο蟮念愋涂梢杂脕韯?chuàng)建用戶自定義的數(shù)據(jù)類型
>>A=0.5A=0.5000
>>B=int16(A)B=1
>>class(B)ans=int162.4邏輯數(shù)據(jù)類型邏輯數(shù)據(jù)類型邏輯數(shù)據(jù)類型是僅具有兩個(gè)數(shù)值的一種數(shù)據(jù)類True——
用1表示False
——
用0表示任何數(shù)值都可以參與邏輯運(yùn)算非零值看作邏輯真零值看作邏輯假邏輯類型的數(shù)據(jù)只能通過數(shù)值類型轉(zhuǎn)換,或者使用特殊的函數(shù)生成相應(yīng)類型的數(shù)組或者矩陣邏輯數(shù)據(jù)類型創(chuàng)建邏輯類型數(shù)據(jù)的函數(shù)函數(shù)說明logical將任意類型的數(shù)組轉(zhuǎn)變?yōu)檫壿嬵愋蛿?shù)組,其中非零元素為真,零元素為假True產(chǎn)生邏輯真值數(shù)組False產(chǎn)生邏輯假值數(shù)組邏輯數(shù)據(jù)類型例2.2創(chuàng)建邏輯類型數(shù)組>>A=[1-23;024;316]A=1-23024316>>logical(A)ans=111011111>>true(size(A))ans=111111111>>false(size(A))ans=000000000邏輯數(shù)據(jù)類型使用true或者false函數(shù)創(chuàng)建邏輯類型數(shù)組時(shí),若不指明參數(shù),則創(chuàng)建一個(gè)邏輯類型的標(biāo)量>>a=truea=1>>b=falseb=0>>c=1c=1>>isnumeric(a)ans=0>>isnumeric(c)ans=
1>>islogical(a)ans=
1>>islogical(b)ans=
1>>islogical(c)ans=
02.5字符串
2.5.1創(chuàng)建字符串創(chuàng)建字符串時(shí)需要使用單引號(hào)將字符串的內(nèi)容包括起來字符串一般以行向量形式存在,并且每一個(gè)字符占用兩個(gè)字節(jié)的內(nèi)存>>a='123'a=123>>class(a)ans=char>>size(a)ans=13創(chuàng)建字符串若需要在字符串內(nèi)容中包含單引號(hào),則在鍵入字符串內(nèi)容時(shí),連續(xù)鍵入兩個(gè)單引號(hào)即可。
>>a='It''sacup'a=It'sacup2.5.2字符串和數(shù)值的轉(zhuǎn)換使用char函數(shù)可以將數(shù)值轉(zhuǎn)變?yōu)樽址褂胐ouble函數(shù)可以將字符轉(zhuǎn)變成數(shù)值>>a='Hello'a=Hello>>b=double(a)b=72101108108111>>char(b)ans=Hello2.5.3字符串操作函數(shù)函數(shù)說明函數(shù)說明char創(chuàng)建字符串,將數(shù)值轉(zhuǎn)變成為字符串strcmpi比較字符串,比較時(shí)忽略字符的大小寫double將字符串轉(zhuǎn)變成為Unicode數(shù)值strncmpi比較字符串前n個(gè)字符,比較時(shí)忽略字符的大小寫blanks創(chuàng)建空白的字符串(由空格組成)findstr在較長(zhǎng)的字符串中查尋較短的字符串出現(xiàn)的索引deblank將字符串尾部的空格刪除strfind在第一個(gè)字符串中查尋第二個(gè)字符串出現(xiàn)的索引ischar判斷變量是否是字符類型strjust對(duì)齊排列字符串strcat水平組合字符串,構(gòu)成更長(zhǎng)的字符向量strrep替換字符串中的子串strvcat垂直組合字符串,構(gòu)成字符串矩陣strmatch查詢匹配的字符串strcmp比較字符串,判斷字符串是否一致upper將字符串的字符都轉(zhuǎn)變成為大寫字符strncmp比較字符串前n個(gè)字符,判斷是否一致lower將字符串的字符都轉(zhuǎn)變成為小寫字符字符串操作函數(shù)組合字符串(strcat和strvcat)>>a='Hello';>>b='MOTO!';>>c=strcat(a,b)c=HelloMOTO!
strvcat函數(shù)允許將不同長(zhǎng)度的字符串組合成為字符矩陣,并且將短字符串?dāng)U充為與長(zhǎng)字符串相同的長(zhǎng)度>>d=strvcat(a,b,c)d=HelloMOTO!HelloMOTO!>>size(d)ans=310字符串操作函數(shù)查尋索引(findstr和strfind)findstr函數(shù)在較長(zhǎng)的字符串中查尋較短的字符串出現(xiàn)的索引strfind函數(shù)在第一個(gè)字符串中查尋第二個(gè)字符串出現(xiàn)的索引>>S1='Afriendinneedisafriendindeed';>>S2='friend';>>a=findstr(S1,S2)a=323>>b=findstr(S2,S1)b=323>>c=strfind(S2,S1)c=[]>>d=strfind(S1,S2)d=3232.5.4字符串轉(zhuǎn)換函數(shù)在MATLAB中使用不同的函數(shù)可以允許不同類型的數(shù)據(jù)和字符串類型的數(shù)據(jù)之間進(jìn)行轉(zhuǎn)換在MATLAB中直接提供了相應(yīng)的函數(shù)對(duì)同樣類型的數(shù)據(jù)進(jìn)行數(shù)制的轉(zhuǎn)換字符串轉(zhuǎn)換函數(shù)數(shù)字和字符之間的轉(zhuǎn)換函數(shù)函數(shù)說明num2str將數(shù)字轉(zhuǎn)變成為字符串int2str將整數(shù)轉(zhuǎn)變成為字符串mat2str將矩陣轉(zhuǎn)變成為可被eval函數(shù)使用的字符串str2double將字符串轉(zhuǎn)變?yōu)殡p精度類型的數(shù)據(jù)str2num將字符串轉(zhuǎn)變?yōu)閿?shù)字sprinf格式化輸出數(shù)據(jù)到命令行窗口sscanf讀取格式化字符串字符串轉(zhuǎn)換函數(shù)不同數(shù)值之間的轉(zhuǎn)換函數(shù)函數(shù)說明hex2num將十六進(jìn)制整數(shù)字符串轉(zhuǎn)變成為雙精度數(shù)據(jù)hex2dec將十六進(jìn)制整數(shù)字符串轉(zhuǎn)變成為十進(jìn)制整數(shù)dec2hex將十進(jìn)制整數(shù)轉(zhuǎn)變成為十六進(jìn)制整數(shù)字符串bin2dec將二進(jìn)制整數(shù)字符串轉(zhuǎn)變成為十進(jìn)制整數(shù)dec2bin將十進(jìn)制整數(shù)轉(zhuǎn)變成為二進(jìn)制整數(shù)字符串base2dec將指定數(shù)制類型的數(shù)字字符串轉(zhuǎn)變成為十進(jìn)制整數(shù)dec2base將十進(jìn)制整數(shù)轉(zhuǎn)變成為指定數(shù)制類型的數(shù)字字符串字符串轉(zhuǎn)換函數(shù)例:函數(shù)num2str使用函數(shù)num2str將數(shù)字轉(zhuǎn)換成為字符串時(shí),可以指定字符串所表示的有效數(shù)字位數(shù)>>a=10;>>class(a)ans=double>>b=num2str(a)b=10>>class(b)ans=char>>A=num2str(rand(2,2),4)A=0.95750.15760.96490.9706有效位數(shù)字符串轉(zhuǎn)換函數(shù)例:函數(shù)str2num在使用時(shí)需要注意:被轉(zhuǎn)換的字符串僅能包含數(shù)字、小數(shù)點(diǎn)、字符“e”(“E”)或者“d”(“D”)、數(shù)字的正號(hào)或者負(fù)號(hào)、復(fù)數(shù)的虛部字符“i”或者“j”使用時(shí)要注意空格字符串轉(zhuǎn)換函數(shù)>>A=str2num('1+2i')A=1.0000+2.0000i>>B=str2num('1+2i')B=1.0000+2.0000i>>C=str2num('1+2i')C=1.00000+2.0000i可以使用str2double函數(shù)避免這個(gè)問題,但str2double函數(shù)只能轉(zhuǎn)換標(biāo)量,不能轉(zhuǎn)換矩陣或者數(shù)組。2.5.5格式化輸入輸出MATLAB可以進(jìn)行格式化的輸入、輸出用于C語言的格式化字符串都可以用于MATLAB的格式化輸入輸出函數(shù)格式化輸入輸出格式化字符字符說明%c顯示內(nèi)容為單一的字符%d有符號(hào)的整數(shù)%e科學(xué)計(jì)數(shù)法,使用小寫的e%E科學(xué)計(jì)數(shù)法,使用大寫的E%f浮點(diǎn)數(shù)據(jù)%g不定,在%e或者%f之間選擇一種形式%G不定,在%E或者%f之間選擇一種形式%o八進(jìn)制表示%s字符串%u無符號(hào)整數(shù)%x十六進(jìn)制表示,使用小寫的字符%X十六進(jìn)制表示,使用大寫的字符格式化輸入輸出格式化輸入輸出函數(shù)sscanf(讀取格式化字符串)A=sscanf(s,format)A=sscanf(s,format,size)sprintf(格式化輸出數(shù)據(jù))B=sprintf(format,A,······)格式化輸入輸出例:sscanf函數(shù)示例(A=sscanf(s,format,size))>>S='0-2+4816-3264-128'S=0-2+4816-3264-128>>sscanf(S,'%d')ans=0-24816-3264-128>>sscanf(S,'%d',[2,3])ans=0416-28-32格式化輸入輸出例:sprintf函數(shù)示例(S=sprintf(format,A,······))>>b=sprintf('%10.5f',pi)b=3.14159格式化輸入輸出input函數(shù)(滿足用戶的輸入進(jìn)行交互的需要)A=input(prompt)A=input(prompt,’s’)第一個(gè)參數(shù)prompt為提示用的字符串第二個(gè)參數(shù)s若有s,則輸入的數(shù)據(jù)為字符串沒有s,則輸入的數(shù)據(jù)為雙精度數(shù)據(jù)格式化輸入輸出例:>>A=input('任意輸入數(shù)字:')任意輸入數(shù)字:22A=22>>B=input('任意輸入數(shù)字:','s')任意輸入數(shù)字:22B=22>>whosNameSizeBytesClassAttributesA1x18doubleB1x24char2.6結(jié)構(gòu)體結(jié)構(gòu)是包含一組記錄的數(shù)據(jù)類型,記錄是存儲(chǔ)在相應(yīng)的字段中。結(jié)構(gòu)的字段可以是任意一種MATLAB數(shù)據(jù)類型的變量或者對(duì)象。結(jié)構(gòu)類型的變量可以是一維的、二維的或者多維的數(shù)組。在訪問結(jié)構(gòu)類型數(shù)據(jù)的元素時(shí),需要使用下標(biāo)配合字段的形式。2.6.1結(jié)構(gòu)的創(chuàng)建直接賦值創(chuàng)建的時(shí)候,直接用結(jié)構(gòu)的名稱,配合操作符“.”和相應(yīng)的字段的名稱完成創(chuàng)建。利用struct函數(shù)創(chuàng)建結(jié)構(gòu)的創(chuàng)建例>>S='Yu';>>Student.age=26;>>Student.grade=uint16(3);>>whosNameSizeBytesClassAttributesStudent1x1386struct>>StudentStudent=name:'Yu'age:26grade:3StudentnameYuage26grade3結(jié)構(gòu)的創(chuàng)建利用struct函數(shù)創(chuàng)建結(jié)構(gòu)數(shù)組struct函數(shù)的基本語法Struct_name=struct('field1',val1,'field2',val2,······)Struct_name=struct('field1',{val1,val2,···},
'field2',{val1,val2,···},······)注意:字段名要用單引號(hào)括起來,若字段值的類型是字符型的也要用單引號(hào)括起來。結(jié)構(gòu)的創(chuàng)建例:>>Student=struct('name','Yu','age',26,'grade',uint16(3));>>StudentStudent=name:'Yu'age:26grade:3結(jié)構(gòu)的創(chuàng)建例>>Student=struct('name',{'Yu','Li'},'age',{26,24},'grade',{3,1});>>Student(1)ans=name:'Yu'age:26grade:3>>Student(2)ans=name:'Li'age:24grade:1StudentnameYuLiage2624grade312.6.2結(jié)構(gòu)的基本操作對(duì)于結(jié)構(gòu)的基本操作其實(shí)是對(duì)結(jié)構(gòu)數(shù)組元素包含的記錄的操作。結(jié)構(gòu)記錄數(shù)據(jù)的訪問字段的增加和刪除訪問結(jié)構(gòu)數(shù)組元素包含的記錄的方法直接使用結(jié)構(gòu)數(shù)組的名稱和字段的名稱以及操作符“.”完成相應(yīng)的操作可以使用“動(dòng)態(tài)”字段的形式基本語法結(jié)構(gòu)struct_name.(expression)利用動(dòng)態(tài)字段形式訪問結(jié)構(gòu)數(shù)組元素,便于利用函數(shù)完成對(duì)結(jié)構(gòu)字段數(shù)據(jù)的重復(fù)操作結(jié)構(gòu)的基本操作例>>Student=struct('name',{'Yu','Li'},'age',{26,24},'grade',{3,1});>>Student(2).ageans=24結(jié)構(gòu)的基本操作結(jié)構(gòu)操作函數(shù)函數(shù)說明struct創(chuàng)建結(jié)構(gòu)或其他數(shù)據(jù)類型轉(zhuǎn)變成結(jié)構(gòu)fieldnames獲取結(jié)構(gòu)的字段名稱getfield獲取結(jié)構(gòu)字段的數(shù)據(jù)setfield設(shè)置結(jié)構(gòu)字段的數(shù)據(jù)rmfield刪除結(jié)構(gòu)的指定字段isfield判斷給定的字符串是否為結(jié)構(gòu)的字段名稱isstruct判斷給定的數(shù)據(jù)對(duì)象是否為數(shù)據(jù)類型oderfields將結(jié)構(gòu)字段排序結(jié)構(gòu)的基本操作例:getfield函數(shù)>>Student=struct('name',{'Yu','Li'},'age',{26,24},'grade',{3,1});>>getfield(Student(2),'name')ans=Li3Matlab的基本運(yùn)算數(shù)學(xué)運(yùn)算符符號(hào)功能實(shí)例+加法3+5=8-減法3-5=-2*矩陣乘法3*5=15.*點(diǎn)乘,即數(shù)組乘法/右除3/5=0.6000./數(shù)組右除\左除3\5=1.6667.\數(shù)組左除^乘方3^5=243.^數(shù)組乘方'矩陣共軛轉(zhuǎn)置.'矩陣轉(zhuǎn)置Matlab的基本運(yùn)算邏輯運(yùn)算符運(yùn)算符說明&&具有短路作用的邏輯與操作,僅能處理標(biāo)量||具有短路作用的邏輯或操作,僅能處理標(biāo)量&元素與操作|元素或操作~邏輯非操作xor邏輯異或操作any當(dāng)向量中的元素有非零元素時(shí),返回真all當(dāng)向量中的元素都是非零元素時(shí),返回真Matlab的基本運(yùn)算例:&操作>>A=eye(3)A=100010001>>B=[100;010;101]B=1000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中政治專題三信守合同與違約第二框訂立合同有學(xué)問學(xué)案新人教版選修5
- 電商平臺(tái)的大數(shù)據(jù)分析與應(yīng)用前景探索
- 2025年拼音標(biāo)準(zhǔn)課件+導(dǎo)學(xué)案‖聲母復(fù)習(xí)課
- 工程工期合同范本
- 住房房屋合同范本
- 打造高效能團(tuán)隊(duì)的工作重點(diǎn)計(jì)劃
- 短視頻在影視營(yíng)銷中的應(yīng)用與效果分析
- 游戲引擎中的編程技術(shù)與應(yīng)用場(chǎng)景探討
- 科技企業(yè)如何通過知識(shí)產(chǎn)權(quán)提高技術(shù)創(chuàng)新能力
- 麗水幼兒園籃球場(chǎng)施工方案
- 班會(huì)課件:逆風(fēng)飛翔破繭成蝶-從《哪吒之魔童鬧?!房辞啻浩诘某砷L(zhǎng)與責(zé)任
- 2.1 堅(jiān)持依憲治國(guó) 教案 -2024-2025學(xué)年統(tǒng)編版道德與法治八年級(jí)下冊(cè)
- 【語文試卷+答案】2024-2025學(xué)年泉州高二上期末質(zhì)檢
- 《修繕定額講解》課件
- 大學(xué)學(xué)生宿舍管理員工作培訓(xùn)
- 初三物理常識(shí)試卷單選題100道及答案
- 高中英語新課程標(biāo)準(zhǔn)解讀課件
- 1.2《友邦驚詫論》教學(xué)設(shè)計(jì)-【中職專用】高二語文同步講堂(高教版2024·拓展模塊上冊(cè))
- 導(dǎo)論公共財(cái)政學(xué)概論.ppt
- 夢(mèng)中的婚禮鋼琴簡(jiǎn)譜(共6頁)
- 新生兒心理的發(fā)生
評(píng)論
0/150
提交評(píng)論