《Matlab數(shù)據(jù)類型》PPT課件.ppt
《《Matlab數(shù)據(jù)類型》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《Matlab數(shù)據(jù)類型》PPT課件.ppt(31頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
2019/11/26,Application of MATLAB,1,第3章 Matlab 數(shù)據(jù)類型,主要內(nèi)容 常量與變量 數(shù)值類型 邏輯類型 字符和字符串 元胞數(shù)組 結(jié)構(gòu)體 函數(shù)句柄,2019/11/26,Application of MATLAB,2,3.1.1 MATLAB系統(tǒng)的特殊變量和常數(shù),3.1 常數(shù)與變量,2019/11/26,Application of MATLAB,3,3.1 常數(shù)與變量,變量名由字母、數(shù)字和下劃線組成; 變量名中英文字母大小寫是有區(qū)別的; 變量名的最大長度是有規(guī)定的 不同版本的系統(tǒng)規(guī)定不同:19個(gè)字符、31或63個(gè)字符等 namelengthmax函數(shù):系統(tǒng)規(guī)定長度 isvarname函數(shù):變量名的合法性 N = namelengthmax isvarname 8th_column,3.1.2 變量名,Matlab用字符i和j表示虛數(shù)單位,如果涉及到復(fù)數(shù)計(jì)算,應(yīng)避免把i和j用作變量名,2019/11/26,Application of MATLAB,4,3.1 常數(shù)與變量,在MATLAB中創(chuàng)建變量不必聲明變量的數(shù)據(jù)類型 例創(chuàng)建一個(gè)A變量 A = 9 將變量的值賦給另一個(gè)變量前,必須確定該變量有值,否則會返回錯(cuò)誤。 例如 A = a ??? Undefined function or variable a. 如果變量已經(jīng)存在,給它賦值會替換它的當(dāng)前值,3.1.3 創(chuàng)建變量,2019/11/26,Application of MATLAB,5,3.1 常數(shù)與變量,3.1.4 變量的數(shù)據(jù)類型,Matlab支持多種數(shù)據(jù)類型 所有類型數(shù)據(jù)都被存儲在矩陣或數(shù)組中進(jìn)行操作,變量數(shù)據(jù)類型,logical 邏輯型,char 字符/字符串,numeric 數(shù)值型,cell 元胞數(shù)組,structure 結(jié)構(gòu)體,function handle 函數(shù)句柄,Java classes Java類,,,int8, unit8, int16, uint16, int32, uint32, int64, uint64, 整數(shù)類型,single 單精度浮點(diǎn)型,double 雙精度浮點(diǎn)型,2019/11/26,Application of MATLAB,6,3.1 常數(shù)與變量,變量的數(shù)據(jù)類型,2019/11/26,Application of MATLAB,7,3.2 數(shù)值類型數(shù)據(jù),數(shù)值類型包括有符號整數(shù)類型、無符號整數(shù)類型、單精度浮點(diǎn)類型和雙精度浮點(diǎn)類型,2019/11/26,Application of MATLAB,8,3.2 數(shù)值類型數(shù)據(jù),整型數(shù)據(jù)類型及其取值范圍,3.2.1 整型數(shù)據(jù)類型,2019/11/26,Application of MATLAB,9,3.2 數(shù)值類型數(shù)據(jù),int8:將值或變量指定為整型 class函數(shù):變量數(shù)據(jù)類型 把數(shù)值轉(zhuǎn)換為一種整型數(shù)據(jù)類型時(shí),matlab會將結(jié)果圓整到最近的整型值 對于小數(shù)位取5的情況,如果數(shù)值為正,則向上圓整,否則向下圓整 將大于整型數(shù)據(jù)類型最大值的數(shù)據(jù)轉(zhuǎn)換為該整型時(shí),matlab返回最大值。如果數(shù)據(jù)值小于數(shù)據(jù)類型的最小值,則返回最小值,3.2.1 整型數(shù)據(jù)類型,2019/11/26,Application of MATLAB,10,3.2 數(shù)值類型數(shù)據(jù),兩個(gè)相同類型的數(shù)據(jù)相加,結(jié)果仍為該整型 例如x=int16(5)+int16(9) 返回結(jié)果為x=14 class(x) 返回結(jié)果為ans=int16 如果結(jié)果大于數(shù)據(jù)類型的最大值或小于最小值,會返回最大值或最小值 例如intwarning(‘on’) int16(50000) Warning: Out of range vonverted to intmin(‘int16’) or intmax(‘int16’) ans=32767,3.2.1 整型數(shù)據(jù)類型,2019/11/26,Application of MATLAB,11,3.2 數(shù)值類型數(shù)據(jù),3.2.2 單精度浮點(diǎn)型數(shù)據(jù)類型,single命令將數(shù)值或變量指定為single型 single型數(shù)據(jù)所占內(nèi)存為double型的一半 將double型數(shù)據(jù)轉(zhuǎn)換為single型時(shí),matlab將該數(shù)據(jù)圓整到最近的單精度浮點(diǎn)值 函數(shù)eps返回浮點(diǎn)數(shù)的精度。所謂精度,是指該浮點(diǎn)數(shù)與下一個(gè)浮點(diǎn)數(shù)之間的差值。eps(x)的值與x的大小有關(guān),x越大,eps(x)越大 雙浮點(diǎn)數(shù)的精度比單浮點(diǎn)數(shù)的精度高一些,2019/11/26,Application of MATLAB,12,3.2 數(shù)值類型數(shù)據(jù),對于數(shù)值變量,默認(rèn)時(shí)matlab指定數(shù)據(jù)為double型 對于大部分?jǐn)?shù)值計(jì)算任務(wù)而言,推薦使用double型 復(fù)數(shù)屬于雙精度浮點(diǎn)數(shù)的一種特殊類型,復(fù)數(shù)作為一個(gè)整體進(jìn)行處理。 “-Inf”和“Inf”表示“負(fù)無窮”和“正無窮”,一旦運(yùn)算結(jié)果超出浮點(diǎn)數(shù)的表示范圍,系統(tǒng)會用“-Inf”和“Inf”表示計(jì)算結(jié)果 非數(shù)(NaN),是“Not a Number”的縮寫,是一個(gè)既不是實(shí)數(shù)也不是復(fù)數(shù)的數(shù)值,matlab提供這樣一個(gè)數(shù)值的目的是擴(kuò)大運(yùn)算范圍,對于0/0、Inf/Inf的運(yùn)算結(jié)果可以有合理的解釋,3.2.3 雙精度浮點(diǎn)型數(shù)據(jù)類型,2019/11/26,Application of MATLAB,13,3.3 邏輯類型數(shù)據(jù),Matlab用“0”和“1”分別代表“邏輯假”和“邏輯真”。 邏輯類型數(shù)據(jù)常以標(biāo)量的形式出現(xiàn),但有時(shí)也可以是邏輯數(shù)組。 在關(guān)系和邏輯運(yùn)算表達(dá)式中所有輸入非0的數(shù)都為“邏輯真”,只有0才為“邏輯假”;計(jì)算結(jié)果,如果值為1,表示“真”,如果值為0,表示“假”。,2019/11/26,Application of MATLAB,14,字符串又稱為字符數(shù)組,由多個(gè)字符連接而成。 字符串一般用單引號括起來。例如,‘Central South University’。 字符串是以ASCII碼形式存儲的。abs和double函數(shù)都可以用來獲取字符串矩陣所對應(yīng)的ASCII碼數(shù)值矩陣。相反,char函數(shù)可以把ASCII碼數(shù)值矩陣轉(zhuǎn)換為字符串矩陣。 在字符串里的每個(gè)字符是數(shù)組里的一個(gè)元素,字符串的存儲要求每個(gè)字符2個(gè)字節(jié)。,3.4 字符和字符串,2019/11/26,Application of MATLAB,15,利用單引號創(chuàng)建字符串 例如創(chuàng)建字符串’China’ country = ‘China’ 在命令窗口中輸入whos命令,輸出顯示 Name Size Bytes Class Country 1x5 10 char array class和ischar函數(shù)測試變量數(shù)據(jù)類型 class(country) 返回結(jié)果為ans=char ischar(country) 返回結(jié)果為ans=1,3.4.1 創(chuàng)建字符串,3.4 字符和字符串,2019/11/26,Application of MATLAB,16,創(chuàng)建二維字符串時(shí),確定每行具有相同的長度。 例如 name = [‘Li Yi’; ’Hu Xu’] 根據(jù)不同長度的字符串創(chuàng)建二維字符串時(shí),將短的那些字符串后面用空格對齊,使所有字符串的長度相同。 例如 name=[‘Liu Ying’; ’Hu Xu ’] 用char函數(shù)創(chuàng)建字符串?dāng)?shù)組,char函數(shù)自動以最長字符串的長度為標(biāo)準(zhǔn),進(jìn)行空格補(bǔ)齊。 例如name = char(‘Liu Ying’; ’Hu Xu’) 從數(shù)組中提取字符串時(shí),用deblank函數(shù)刪除后面的空格。 trimname= deblank(name(2,:)) size(trimname),3.4 字符和字符串,3.4.1 創(chuàng)建字符串,2019/11/26,Application of MATLAB,17,3.4.2 類型轉(zhuǎn)換,abs(str)返回一個(gè)向量,其元素是字符串中字符的ASCII值 char(x)根據(jù)指定的字符集將向量x中的整數(shù)轉(zhuǎn)化成字符。這個(gè)命令是命令abs的逆操作。 num2str(f)將數(shù)值f轉(zhuǎn)換成字符串 str2num(str)將字符串str轉(zhuǎn)換為數(shù)字 lower(str)將字符串中所有字母轉(zhuǎn)換為小寫字母 upper(str)將字符串中所有字符轉(zhuǎn)化為大寫字母,3.4 字符和字符串,2019/11/26,Application of MATLAB,18,3.4.3 比較字符串,strcmp函數(shù)比較字符串 strncmp函數(shù)可以比較字符串的前n+1個(gè)字符 對于字符串結(jié)構(gòu)數(shù)組,這兩個(gè)函數(shù)一個(gè)單元一個(gè)單元地進(jìn)行比較 對于字符串,可使用關(guān)系運(yùn)算符 str1=‘hello’; str2=‘help’; C1=strcmp(str1, str2); C2= strncmp(str1, str2, 2); 因?yàn)閟tr1和str2不相等,調(diào)用strcmp函數(shù)時(shí)返回0,而str1和str2前3個(gè)字符相同,調(diào)用strncmp函數(shù)時(shí)返回1 A=[‘book’;’pen’;’rule’]; B=[‘pencil’; ‘pen’; ‘pencilbox’]; strcmp(A,B) 返回結(jié)果為ans=0 1 0 A=‘face’; B=‘cake’; A==B; ans=0 1 0 1,3.4 字符和字符串,2019/11/26,Application of MATLAB,19,字符的聚合方法:使用聚合運(yùn)算符[ ]或sprintf函數(shù) num_chars = 28; s = [‘There are ‘int2str(num_chars)’ characters here’] s = sprintf(‘There are %d characters here\n’, num-chars) 用strcat函數(shù)也可以把兩個(gè)或更多字符串組合在一起 country = ‘China’; province = ‘Sichuan’ strcat(country, ’,’, province),3.4.4 聚合字符串,用聚合方法創(chuàng)建字符串時(shí),用sprintf函數(shù)比使用[ ]好,特別是在組成復(fù)雜表達(dá)式的時(shí)候,該函數(shù)對輸出格式可以有更多的控制,而且一般運(yùn)行得更快。也可用strcat函數(shù)聚合字符串,但對于簡單的聚合,使用sprintf和[ ]更快。,3.4 字符和字符串,2019/11/26,Application of MATLAB,20,3.4 字符和字符串,isletter函數(shù)確定字符是否為字母; isspace函數(shù)確定字符是否為空區(qū)(空格、空表間隔或空行) 例如創(chuàng)建一個(gè)名為mystring的字符串,使用函isletter函數(shù): mystring= ‘Room 401’; A=isletter(mystring); A= 1 1 1 1 0 0 0 前四個(gè)字符是字母,所以返回值為1。,3.4.5 字符分類,2019/11/26,Application of MATLAB,21,3.4 字符和字符串,strrep函數(shù)進(jìn)行標(biāo)準(zhǔn)的搜索和替代操作 findstr函數(shù) strmatch函數(shù)在字符串或字符串單元數(shù)組的整個(gè)行中進(jìn)行查找,看有沒有以給定字符序列打頭的字符串,它返回以該字符打頭的行的行號。 label = ‘Sample 1, 04/28/03’; newlabel = strrep(label, ‘28’, ‘30’) %把28改為30 position = findstr(‘a(chǎn)mp’, label) %字符串‘a(chǎn)mp’在label中出現(xiàn)的起始位置為label中第2個(gè)字符的位置。 maxstrings = strvcat(‘max’;’minimax’;’maximum’); %strvcat沿垂直方向連接字符串,strcat沿水平方向連接字符串 strmatch(‘max’,maxstrings),3.4.6 搜索和替換,2019/11/26,Application of MATLAB,22,元胞數(shù)組(單元數(shù)組)是一種特殊的數(shù)組,這種數(shù)組的元素是單元,能包含其他matlab數(shù)組。例如,單元數(shù)組的一個(gè)單元可能包含一個(gè)實(shí)型矩陣,另一個(gè)單元又包含文本字符串?dāng)?shù)組,而第三個(gè)單元又包含值為復(fù)數(shù)的矢量,可以生成任意大小和形狀的單元數(shù)組。 結(jié)構(gòu)體和元胞數(shù)組為不同類型的數(shù)據(jù)提供了一種系統(tǒng)存儲機(jī)制,它們主要在組織數(shù)據(jù)的方式上有所不同。在結(jié)構(gòu)體中,從命名字段訪問數(shù)據(jù);在元胞數(shù)組中,通過矩陣索引操作訪問數(shù)據(jù)。,3.5 元胞數(shù)組,2019/11/26,Application of MATLAB,23,3.5 元胞數(shù)組,通過賦值語句創(chuàng)建元胞數(shù)組 單元索引:按標(biāo)準(zhǔn)數(shù)組方式把單元索引號放到小括號中間,把單元地內(nèi)容放在賦值語句的右端,用大括號括起來。 內(nèi)容索引:以標(biāo)準(zhǔn)數(shù)組標(biāo)注方式把單元索引號以大括號括起來放在左側(cè),在賦值語句的右側(cè)指定內(nèi)容。 例利用單元索引方式和內(nèi)容索引方式創(chuàng)建2x2的單元數(shù)組A A(1,1)={[1 4 3; 0 5 8; 7 2 9]}; A(1,2)={‘Liu Zhong’}; A(2,1)={3+7i}; A(2,2)={-pi:pi/10:pi}; %單元索引方式 A{1,1}=[1 4 3; 0 5 8; 7 2 9]; A{1,2}=‘Liu Zhong’; A{2,1}=3+7i; A{2,2}=-pi:pi/10:pi; %內(nèi)容索引方式,創(chuàng)建元胞數(shù)組,2019/11/26,Application of MATLAB,24,3.6 結(jié)構(gòu)體,使用賦值語句 例如創(chuàng)建一個(gè)student結(jié)構(gòu)數(shù)組, student.name=‘Liu Dan’; student.ID=02; student.test=[79 75 73;80 78 77.5; 80 85 85]; student(2).name=‘Han Xu’; student.ID=10; student.test=[68 70 68; 78 88 81; 92 90 93]; 使用struct函數(shù) 可以使用struct函數(shù)預(yù)分配一個(gè)結(jié)構(gòu)數(shù)組,其基本形式為: str_array=student(‘field1’,val1, ‘field2’,val2, …) 其中,變量為字段名和它們的對應(yīng)值。,創(chuàng)建結(jié)構(gòu)體,2019/11/26,Application of MATLAB,25,2.7 函數(shù)句柄,函數(shù)句柄是一種matlab數(shù)據(jù)類型,保存函數(shù)的路徑、視野、函數(shù)名及重載方式等。 使用函數(shù)句柄的好處主要有: 把函數(shù)獲取的信息傳給其它函數(shù); 掌握重載函數(shù)的方法; 允許更廣泛地獲取子函數(shù)和私有函數(shù); 保證函數(shù)計(jì)算的可靠性; 減小定義函數(shù)的字段個(gè)數(shù); 改進(jìn)重復(fù)操作; 在數(shù)組、結(jié)構(gòu)體和元胞數(shù)組中操作句柄; 可以在調(diào)用中將函數(shù)句柄作為變量傳遞給另一個(gè)函數(shù),2019/11/26,Application of MATLAB,26,3.7 函數(shù)句柄,在Matlab中,在函數(shù)名前用@符號創(chuàng)建一個(gè)函數(shù)句柄。 用于句柄的函數(shù)名最多只能有N個(gè)字符 函數(shù)句柄的內(nèi)容通過functions顯示 f_h=@plot functions(f_h) ans = function: plot type: overloaded‘ file: MATLAB built-in function‘ methods: [1x1 struct],函數(shù)句柄的創(chuàng)建與顯示,2019/11/26,Application of MATLAB,27,MATLAB用十進(jìn)制數(shù)表示一個(gè)常數(shù),可采用日常記數(shù)法和科學(xué)記數(shù)法兩種表示方法 一般情況下,MATLAB內(nèi)部每一個(gè)數(shù)據(jù)元素都是用雙精度數(shù)來表示和存儲的。數(shù)據(jù)輸出時(shí)用戶可以用format命令設(shè)置或改變數(shù)據(jù)輸出格式 format命令的格式為: format 格式符 其中格式符決定數(shù)據(jù)的輸出格式,如long、short、hex、rat(輸出有理數(shù)),3.8 數(shù)據(jù)輸出格式,2019/11/26,Application of MATLAB,28,3.8 數(shù)據(jù)輸出格式,2019/11/26,Application of MATLAB,29,3.8 數(shù)據(jù)輸出格式,2019/11/26,Application of MATLAB,30,關(guān)于format命令的幾點(diǎn)說明: format命令只影響數(shù)據(jù)的輸出格式,而不影響數(shù)據(jù)的存儲和計(jì)算 默認(rèn)的輸出格式是short 注意rat格式。如果在進(jìn)行運(yùn)算前執(zhí)行format rat命令,則可以用分?jǐn)?shù)形式顯示運(yùn)算結(jié)果,這樣便于核對手算結(jié)果的正確性 在改變了輸出格式后,為了以后還按默認(rèn)的格式輸出,應(yīng)當(dāng)再執(zhí)行format short命令,3.8 數(shù)據(jù)輸出格式,2019/11/26,Application of MATLAB,31,數(shù)據(jù)輸出格式(續(xù)),即使在默認(rèn)格式下,0也僅僅是輸出0 顯示格式是非常重要的,要熟悉幾種重要的格式,3.8 數(shù)據(jù)輸出格式,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Matlab數(shù)據(jù)類型 Matlab 數(shù)據(jù)類型 PPT 課件
鏈接地址:http://www.3dchina-expo.com/p-2578341.html