華科能源流機組李老師MATLAB課件(一)_第1頁
華科能源流機組李老師MATLAB課件(一)_第2頁
華科能源流機組李老師MATLAB課件(一)_第3頁
華科能源流機組李老師MATLAB課件(一)_第4頁
華科能源流機組李老師MATLAB課件(一)_第5頁
已閱讀5頁,還剩76頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、11.4. matlab1.4. matlab環(huán)境環(huán)境 matlab matlab既是一種算法語言,又是一個編既是一種算法語言,又是一個編程環(huán)境,更是一個開發(fā)系統(tǒng)。程環(huán)境,更是一個開發(fā)系統(tǒng)。(1)(1)工作空間(窗口)(變量瀏覽器)工作空間(窗口)(變量瀏覽器)鏈接鏈接 工作空間:指運行工作空間:指運行matlabmatlab的所有變量和的所有變量和常量構(gòu)常量構(gòu) 成的空間,是一個抽象的概念。成的空間,是一個抽象的概念。 每打開一次,每打開一次,matlabmatlab自動建立一個工作自動建立一個工作空間。空間。 matlabmatlab運行期間一直存在,關(guān)閉后自動運行期間一直存在,關(guān)閉后自動消

2、失。消失。 剛打開的工作空間里只有幾個常量。變剛打開的工作空間里只有幾個常量。變量在運行程序時加到空間中。量在運行程序時加到空間中。2變量會在變量會在matlabmatlab關(guān)閉前一直存在,除非用命令刪除。關(guān)閉前一直存在,除非用命令刪除。可以隨時查看工作空間中的變量。可以隨時查看工作空間中的變量。一個程序的運行結(jié)果以變量的形式保存在工作空間中,工一個程序的運行結(jié)果以變量的形式保存在工作空間中,工作空間的所有變量可以保存到一個文件中,以備后用。作空間的所有變量可以保存到一個文件中,以備后用。 save(load) save(load) 文件名文件名 變量變量(2) (2) 命令窗口命令窗口 鏈接

3、鏈接 用戶和用戶和matlabmatlab交互的工具。交互的工具。(3) (3) 命令歷史記錄窗口命令歷史記錄窗口 鏈接鏈接 記錄每次開始記錄每次開始matlabmatlab的時間及命令窗口運行過的所有指的時間及命令窗口運行過的所有指令。令。(4)(4)當(dāng)前路徑窗口(路徑瀏覽器)當(dāng)前路徑窗口(路徑瀏覽器)鏈接鏈接 窗口包括:工具欄、當(dāng)前目錄設(shè)置區(qū)及所設(shè)置目錄下的窗口包括:工具欄、當(dāng)前目錄設(shè)置區(qū)及所設(shè)置目錄下的文件詳細列表等。文件詳細列表等。3(5) (5) 程序編輯器程序編輯器菜單欄的菜單欄的filefile選項中的選項中的newnew或或openopen選項;選項;工具欄的工具欄的newne

4、w或或openopen按鈕;按鈕;命令窗口鍵入命令窗口鍵入editedit命令;命令;matlabmatlab界面的界面的startstart菜單里;菜單里;鏈接鏈接操作系統(tǒng)的開始菜單里。操作系統(tǒng)的開始菜單里。鏈接鏈接(6) matlab(6) matlab的幫助系統(tǒng)的幫助系統(tǒng) 聯(lián)機幫助系統(tǒng)聯(lián)機幫助系統(tǒng) 鏈接鏈接matlabmatlab主窗口中單擊工具條中的問號按鈕;主窗口中單擊工具條中的問號按鈕;在命令窗口中輸入在命令窗口中輸入helpwinhelpwin、helpdeskhelpdesk或或docdoc;選擇選擇helphelp下拉菜單中的幫助選項。下拉菜單中的幫助選項。4命令查詢系統(tǒng)命令

5、查詢系統(tǒng)在命令窗口通過幫助命令對特定的內(nèi)容查在命令窗口通過幫助命令對特定的內(nèi)容查詢。詢。 a. help a. help: helphelp函數(shù)名函數(shù)名 b. lookforb. lookfor:lookforlookfor關(guān)鍵詞關(guān)鍵詞 c. c. 其他幫助命令:其他幫助命令: existexist,變量或函數(shù)檢驗:,變量或函數(shù)檢驗:exist +exist +變量名變量名(函數(shù)名)(函數(shù)名) whowho,用于當(dāng)前內(nèi)存變量列表,用于當(dāng)前內(nèi)存變量列表 whoswhos,顯示當(dāng)前內(nèi)存變量詳細信息,顯示當(dāng)前內(nèi)存變量詳細信息 whichwhich,確定函數(shù)路徑:,確定函數(shù)路徑:whichwhich

6、函數(shù)名函數(shù)名5whatwhat,用于當(dāng)前路徑,用于當(dāng)前路徑matlabmatlab文件列表文件列表dirdir,用于當(dāng)前路徑所有文件及文件夾列表,用于當(dāng)前路徑所有文件及文件夾列表(1)(1)變量變量 matlabmatlab對使用變量名稱的規(guī)定:對使用變量名稱的規(guī)定: 變量名稱區(qū)別英文大小寫;變量名稱區(qū)別英文大小寫; 變量的長度上限為變量的長度上限為 6363個字符個字符(7.0(7.0版本版本) )。 變量名的第一個字必須是英文字母,隨后可變量名的第一個字必須是英文字母,隨后可以摻雜英文字、數(shù)字或是底線。以摻雜英文字、數(shù)字或是底線。1.5 1.5 其它其它6幾個持殊變量:幾個持殊變量:ans

7、 ans 默認的計算結(jié)果的變數(shù)名默認的計算結(jié)果的變數(shù)名 eps matlabeps matlab定義的正的極小值定義的正的極小值 2.2204e-16 2.2204e-16 pi pi 內(nèi)建內(nèi)建值值 i, j i, j inf inf 無窮大,如無窮大,如1/01/0nan nan 不定量,如不定量,如0/00/0nargin nargin 函數(shù)的輸入變量數(shù)目函數(shù)的輸入變量數(shù)目nargout nargout 函數(shù)的輸出變量數(shù)目函數(shù)的輸出變量數(shù)目clear clear 刪除工作空間中的變量刪除工作空間中的變量1 ji7(2) (2) 注釋和標(biāo)點注釋和標(biāo)點% % 百分號后的所有文字為注釋百分號后的

8、所有文字為注釋, 逗號告訴逗號告訴matlabmatlab顯示結(jié)果顯示結(jié)果; 分號禁止顯示分號禁止顯示多條命令可以被逗號或分號隔開放在同一行。多條命令可以被逗號或分號隔開放在同一行。(3)(3) 算術(shù)運算及規(guī)則算術(shù)運算及規(guī)則 加加 (+)(+)、減、減 (-)(-)、乘、乘 ( (* *) )、除、除 (/)(/)、冪次方冪次方 ()()表達式運算優(yōu)先規(guī)則:同代數(shù)中運算。表達式運算優(yōu)先規(guī)則:同代數(shù)中運算。(4) (4) 復(fù)數(shù)復(fù)數(shù)對復(fù)數(shù)不需作特殊處理對復(fù)數(shù)不需作特殊處理8(5)(5)不同精確度的數(shù)字格式顯示:不同精確度的數(shù)字格式顯示: filefilepreferencepreferenceco

9、mmand windowscommand windowsnumerical formatnumerical format,或直接在命令窗口,或直接在命令窗口鍵入指令鍵入指令, ,例如:例如: format short, 3.1416 format short, 3.1416 預(yù)設(shè)的預(yù)設(shè)的 4 4 位有效小數(shù)位數(shù)位有效小數(shù)位數(shù) format long, format long, 3.14159265358979 15 3.14159265358979 15 位有效小位有效小數(shù)位數(shù)數(shù)位數(shù) format short e, format short e, 3.1416e+000 3.1416e+000

10、 4 4 位有效小數(shù)位數(shù)指數(shù)格式位有效小數(shù)位數(shù)指數(shù)格式 format short g, format short g, 3.141592653589793e+00 3.141592653589793e+00 15 15位有效小數(shù)位數(shù)指數(shù)格式位有效小數(shù)位數(shù)指數(shù)格式9c. c. 用簡短命令計算并繪制在用簡短命令計算并繪制在0 0 x x 6 6范圍內(nèi)的范圍內(nèi)的sin(2x)sin(2x)、sinxsinx2 2 、 sinsin2 2x x。x=linspace(0,6)x=linspace(0,6)y1=sin(2y1=sin(2* *x),y2=sin(x.2),y3=(sin(x).2x),

11、y2=sin(x.2),y3=(sin(x).2; ;plot(x,y1,x, y2,x, y3)plot(x,y1,x, y2,x, y3)0123456- 1- 0 .8- 0 .6- 0 .4- 0 .200 .20 .40 .60 .81102.1 2.1 矩陣矩陣1. 1. 矩陣的創(chuàng)建矩陣的創(chuàng)建遵循的基本規(guī)則:遵循的基本規(guī)則:整個輸入矩階必須包含在方括號整個輸入矩階必須包含在方括號 中;中;行與行之間必須用分號行與行之間必須用分號(;)(;)或或enterenter鍵符分隔;鍵符分隔;每行中的元素用逗號每行中的元素用逗號(,)(,)或空格分隔;或空格分隔;矩陣中的元素可以為數(shù)字或表達

12、式,但表達式矩陣中的元素可以為數(shù)字或表達式,但表達式中不可包含未知的變量。中不可包含未知的變量。矩陣元素可以是復(fù)數(shù):用書寫復(fù)數(shù)的方法或矩陣元素可以是復(fù)數(shù):用書寫復(fù)數(shù)的方法或 “一個實部矩陣一個虛部矩陣一個實部矩陣一個虛部矩陣”的方法。的方法。當(dāng)矩陣中沒有任何元素時,矩陣為當(dāng)矩陣中沒有任何元素時,矩陣為“空空陣陣”(empty matrix)(empty matrix)。11(1 1)直接輸入法)直接輸入法 例例2-12-1 用直接輸入法創(chuàng)建一個用直接輸入法創(chuàng)建一個4 44 4的的a a矩陣。矩陣。 a=2, 3 4 5; 3, 4 5, 6; 4, 5 6 7a=2, 3 4 5; 3, 4

13、5, 6; 4, 5 6 7 7, 8, 9 10 7, 8, 9 10(2 2)由函數(shù)創(chuàng)建矩陣)由函數(shù)創(chuàng)建矩陣 zeroszeros:生成全部元素為:生成全部元素為0 0的零距陣的零距陣 (zeros (zeros array)array) ones ones:生成全部元素為:生成全部元素為1 1的距陣的距陣 eyeeye:生成單位距陣:生成單位距陣 randrand:生成均勻分布的隨機矩陣,矩陣元素:生成均勻分布的隨機矩陣,矩陣元素在在0-10-1間間 diagdiag:生成一個對角陣或由對角線元素組成:生成一個對角陣或由對角線元素組成的向量的向量12使用形式:使用形式: a=zeros(

14、n) a=zeros(n) 生成生成n nn n零矩陣。零矩陣。 a=zeros(m,n)a=zeros(m,n)或者或者a=zeros(m,n) a=zeros(m,n) 生成生成m mn n的零矩陣。的零矩陣。 a=zeros(m,n,p,)a=zeros(m,n,p,)或者或者a=zeros(m n p ) a=zeros(m n p ) 生成生成m mn np p的零矩陣。的零矩陣。 b=zeros(size(a) b=zeros(size(a) 生成和矩陣生成和矩陣a a大小相等的全零矩陣。大小相等的全零矩陣。 a=ones (n) a=ones (n) 生成生成n nn n全全1

15、1矩陣。矩陣。 a=ones (m,n)a=ones (m,n)或者或者a=ones (m,n) a=ones (m,n) 生成生成m mn n的全的全1 1矩矩陣。陣。 a=ones (m,n,p,)a=ones (m,n,p,)或者或者a=ones (m n p ) a=ones (m n p ) 生成生成m mn np p的全的全1 1矩陣。矩陣。 b=ones (size(a) b=ones (size(a) 生成和矩陣生成和矩陣a a大小相等的全大小相等的全1 1矩陣。矩陣。 a=eye (n) a=eye (n) 生成生成n nn n單位矩陣。單位矩陣。 a=eye (m,n)a=

16、eye (m,n)或者或者a=eye (m,n) a=eye (m,n) 生成生成m mn n的單位矩的單位矩陣。陣。 b=eye (size(a) b=eye (size(a) 生成和矩陣生成和矩陣a a大小相等的單位矩陣。大小相等的單位矩陣。13a=rand (n) a=rand (n) 生成生成n nn n隨機矩陣。隨機矩陣。 a=rand (m,n)a=rand (m,n)或者或者a=rand (m,n) a=rand (m,n) 生成生成m mn n的隨機矩的隨機矩陣。陣。 a=rand (m,n,p,)a=rand (m,n,p,)或者或者a=rand (m n p ) a=ran

17、d (m n p ) 生成生成m mn np p的隨機矩陣。的隨機矩陣。 b=rand (size(a) b=rand (size(a) 生成和矩陣生成和矩陣a a大小相等的隨機矩陣。大小相等的隨機矩陣。 a=rand a=rand 不帶任何參數(shù)將產(chǎn)生一個隨機數(shù)。不帶任何參數(shù)將產(chǎn)生一個隨機數(shù)。a adiag(v) diag(v) 當(dāng)當(dāng)v v為向量時,產(chǎn)生一個以向量為向量時,產(chǎn)生一個以向量v v的元素為對的元素為對角線的矩陣(數(shù)組);當(dāng)角線的矩陣(數(shù)組);當(dāng)v v為矩陣時,產(chǎn)生為矩陣時,產(chǎn)生 一個以一個以v v矩陣的矩陣的主對角線元素為元素的向量(數(shù)組)主對角線元素為元素的向量(數(shù)組) 。 例例

18、2222 利用利用diagdiag產(chǎn)生對角陣及對角線向量。產(chǎn)生對角陣及對角線向量。鏈接 a=rand(4,4), %a=rand(4,4), %創(chuàng)建創(chuàng)建個個4 4階隨機矩陣階隨機矩陣 b=diag(a)b=diag(a) c=diag(b) c=diag(b)14注意:在注意:在matlabmatlab中,不需要事先定義矩陣的維數(shù)中,不需要事先定義矩陣的維數(shù),matlab,matlab自自動為矩陣分配存儲空間。但如果程序運行過程中采用零動為矩陣分配存儲空間。但如果程序運行過程中采用零矩陣為矩陣生成的全部元素或某一行矩陣為矩陣生成的全部元素或某一行( (列列) )的元素預(yù)先分的元素預(yù)先分配內(nèi)存空

19、間,會大大加快程序運算速度。配內(nèi)存空間,會大大加快程序運算速度。(zeros)(zeros)(3 3)從外部調(diào)入數(shù)據(jù)文件生成矩陣)從外部調(diào)入數(shù)據(jù)文件生成矩陣 可以是可以是matlabmatlab矩陣存儲的二進制文件(矩陣存儲的二進制文件(.mat.mat);也可);也可以是數(shù)值文本文件,但其中的數(shù)據(jù)在調(diào)入前要先排成矩以是數(shù)值文本文件,但其中的數(shù)據(jù)在調(diào)入前要先排成矩陣形式;或陣形式;或excelexcel數(shù)據(jù):數(shù)據(jù): load filename.datload filename.dat(filename.txtfilename.txt) % %將數(shù)據(jù)文件將數(shù)據(jù)文件filenamefilename

20、的數(shù)據(jù)內(nèi)容調(diào)入工作空間的數(shù)據(jù)內(nèi)容調(diào)入工作空間 xlsread(c:matlabworkmyspreadsheet,sheet2,xlsread(c:matlabworkmyspreadsheet,sheet2,a2:j5)a2:j5)15 例例2323 直接讀入外部數(shù)據(jù)文件生成一個矩直接讀入外部數(shù)據(jù)文件生成一個矩陣陣 鏈接 load example2_3.txtload example2_3.txt 提示:需要調(diào)入的文件必須在提示:需要調(diào)入的文件必須在matlabmatlab搜索路搜索路徑范圍內(nèi),否則找不到文件。徑范圍內(nèi),否則找不到文件。 另外另外: : 可使用可使用filefileimpor

21、t data import data 從外部數(shù)從外部數(shù)據(jù)文件中直接讀取數(shù)據(jù)。據(jù)文件中直接讀取數(shù)據(jù)。鏈接鏈接 選中文件,單擊選中文件,單擊 打開打開 按鈕,然后打開按鈕,然后打開“import wizard”import wizard”窗口。單擊窗口。單擊“finish”finish”按鈕,即可輸入打開的數(shù)據(jù)文件中數(shù)據(jù)。按鈕,即可輸入打開的數(shù)據(jù)文件中數(shù)據(jù)。鏈接鏈接16(4 4)特殊矩陣向量的生成)特殊矩陣向量的生成 直接輸入直接輸入 自動創(chuàng)建自動創(chuàng)建 利用冒號生成向量利用冒號生成向量: x=i:j:k: x=i:j:k 若若j0, j0, 且且ikik或或j0jk, ik, 則生成向量則生成向量

22、 x=i,i+j,i+2j,.,k;x=i,i+j,i+2j,.,k; 若若j0, j0, 且且ikik或或j0j0且且ik, i0k0,為主對角線之上;,為主對角線之上; k0k2) i=find(abs(x)2) % %使用使用i i中的下標(biāo)創(chuàng)建數(shù)組中的下標(biāo)創(chuàng)建數(shù)組y=x(i)y=x(i)% %用于矩陣用于矩陣a=1 2 3;4 5 6;7 8 9a=1 2 3;4 5 6;7 8 9i,j=find(a=5)i,j=find(a=5)374. 4. 數(shù)組的運算數(shù)組的運算(1 1)標(biāo)量數(shù)組運算)標(biāo)量數(shù)組運算標(biāo)量對數(shù)組的加、減、乘、除運算是標(biāo)量對標(biāo)量對數(shù)組的加、減、乘、除運算是標(biāo)量對數(shù)組的每

23、個元素施加運算。數(shù)組的每個元素施加運算。(2 2)數(shù)組數(shù)組運算)數(shù)組數(shù)組運算兩個數(shù)組具有相同維數(shù)時,加、減、乘、除兩個數(shù)組具有相同維數(shù)時,加、減、乘、除按元素對元素進行。按元素對元素進行。點乘:點乘:. .* *是數(shù)組元素對元素的乘法運算。是數(shù)組元素對元素的乘法運算。點除:點除:./ ./ 、.是數(shù)組元素對元素的除法運算。是數(shù)組元素對元素的除法運算。數(shù)組除法:正斜杠數(shù)組除法:正斜杠/ /和反斜杠和反斜杠 兩種,斜杠下兩種,斜杠下的數(shù)組都被斜杠上的數(shù)組所除。的數(shù)組都被斜杠上的數(shù)組所除。數(shù)組的冪:數(shù)組的冪:.為元素對元素的冪。為元素對元素的冪。元素對元素數(shù)組運算小結(jié)元素對元素數(shù)組運算小結(jié) 鏈接鏈接

24、38數(shù)組尋訪和賦值小結(jié):數(shù)組尋訪和賦值小結(jié):a(r,c) a(r,c) 由索引向量由索引向量r r定義的行和由索引定義的行和由索引向量向量c c定定 義的列所構(gòu)成的義的列所構(gòu)成的a a中的子數(shù)組。中的子數(shù)組。a(r,:) a(r,:) 由索引向量由索引向量r r定義的行和全部的定義的行和全部的列所構(gòu)列所構(gòu) 成的成的a a中的子數(shù)組。中的子數(shù)組。a(:,c) a(:,c) 由全部的行和由索引向量由全部的行和由索引向量c c定義定義的列所的列所 構(gòu)成的構(gòu)成的a a中的子數(shù)組。中的子數(shù)組。a(:) aa(:) a中所有列元素由左到右、首尾中所有列元素由左到右、首尾相接組相接組 成的一長列數(shù)組。成的一

25、長列數(shù)組。a(i) a(i) 單下標(biāo)尋訪,向量單下標(biāo)尋訪,向量i i定義的定義的a a中元中元素。素。39第三章第三章 關(guān)系和邏輯運算關(guān)系和邏輯運算關(guān)系和邏輯運算:提供求解真關(guān)系和邏輯運算:提供求解真/ /假命題的假命題的答案,控制基于真答案,控制基于真/ /假命題的一系列假命題的一系列matlabmatlab命令的流程或執(zhí)行次序。命令的流程或執(zhí)行次序。所有關(guān)系和邏輯表達式的輸入,所有關(guān)系和邏輯表達式的輸入,matlabmatlab把任何非零數(shù)值當(dāng)作真,把零當(dāng)作假。把任何非零數(shù)值當(dāng)作真,把零當(dāng)作假。 所有關(guān)系和邏輯表達式的輸出,對于真,所有關(guān)系和邏輯表達式的輸出,對于真,輸出為輸出為1 1;對

26、于假,輸出為零。;對于假,輸出為零。 關(guān)系操作符關(guān)系操作符 說明說明 小于小于 = 大于大于 = = 大于或等于大于或等于 = = = 等于等于 = = 不等于不等于3.1 3.1 關(guān)系操作符關(guān)系操作符41運算法則:運算法則: 比較兩個同樣大小的數(shù)組,或一個數(shù)比較兩個同樣大小的數(shù)組,或一個數(shù)組和一個標(biāo)量。數(shù)組(標(biāo)量)和數(shù)組中組和一個標(biāo)量。數(shù)組(標(biāo)量)和數(shù)組中的每一個元素相比較,所得結(jié)果為的每一個元素相比較,所得結(jié)果為0 0和和1 1組成且具有同樣維數(shù)的數(shù)組。組成且具有同樣維數(shù)的數(shù)組。 例例3131關(guān)系操作符關(guān)系操作符 鏈接42邏輯操作符邏輯操作符 說明說明 & & 與與 | |

27、 或或 非非 3.2 3.2 邏輯操作符邏輯操作符 邏輯操作符:提供了一種組合或否定關(guān)邏輯操作符:提供了一種組合或否定關(guān)系表達式。系表達式。43運算法則:運算法則:l兩個同樣大小的數(shù)組,或一個數(shù)組和兩個同樣大小的數(shù)組,或一個數(shù)組和一個標(biāo)量參與運算:數(shù)組(標(biāo)量)和數(shù)一個標(biāo)量參與運算:數(shù)組(標(biāo)量)和數(shù)組中的每一個元素按標(biāo)量法則進行運算,組中的每一個元素按標(biāo)量法則進行運算,所得結(jié)果為所得結(jié)果為0 0和和1 1組成且具有同樣維數(shù)的組成且具有同樣維數(shù)的數(shù)組。數(shù)組。44l兩個標(biāo)量兩個標(biāo)量a a和和b b運算,則:運算,則:a ab b:當(dāng):當(dāng)a a,b b全是非全是非0 0時,運算結(jié)果是時,運算結(jié)果是1

28、1, 否則是否則是0 0;a|ba|b: 當(dāng)當(dāng)a a,b b中只要有一個非中只要有一個非0 0,運算結(jié)果,運算結(jié)果 為為1,1,否則為否則為0;0; a a: 當(dāng)當(dāng)a a是是0 0時,運算結(jié)果是時,運算結(jié)果是1 1,否則是,否則是0 0。45l在邏輯在邏輯“與與”、 “ “或或”、 “ “非非”三者三者中中,“,“與與”及及“或或”從左向右依次執(zhí)行,且從左向右依次執(zhí)行,且都低于都低于“非非”的優(yōu)先級。通過增加的優(yōu)先級。通過增加“( )”( )”可以改變各操作符之間的優(yōu)先級。可以改變各操作符之間的優(yōu)先級。 例例32 32 鏈接鏈接 邏輯操作符邏輯操作符0101。 例例33 33 鏈接鏈接 鏈接鏈

29、接 邏輯操作符邏輯操作符0202,0303。463.3 3.3 關(guān)系與邏輯函數(shù)關(guān)系與邏輯函數(shù) xor(x,y)xor(x,y):異或運算。:異或運算。x x和和y y都是零都是零( (假假) )或或都是非零都是非零( (真真) ), 相應(yīng)位置元素為相應(yīng)位置元素為0 0,否則(,否則(x x或或y y非零非零( (真真) ))?。┤? 1。any(x) any(x) : 若一個向量若一個向量x x中,有非零元素,中,有非零元素,結(jié)果為結(jié)果為1 1,否則,否則 為為0 0;若矩陣;若矩陣x x中的每一列有非中的每一列有非零元素,返回零元素,返回1 1, 否則為否則為0 0。all(x): all(

30、x): 若一個向量若一個向量x x中,所有元素是非中,所有元素是非零,返回零,返回1 1,否,否 則為則為0 0;若矩陣;若矩陣 x x中的每一列所中的每一列所有元素非零,有元素非零, 返回返回1 1,否則為,否則為0 0。473.4 nans3.4 nans和空矩陣和空矩陣 nansnans和空矩陣和空矩陣( )( )要求在要求在matlabmatlab中作中作特殊處理,特別是用邏輯(關(guān)系)表達式特殊處理,特別是用邏輯(關(guān)系)表達式時。時。根據(jù)根據(jù)ieeeieee數(shù)學(xué)標(biāo)準(zhǔn),對數(shù)學(xué)標(biāo)準(zhǔn),對nansnans的幾乎所有的幾乎所有運算都得出運算都得出nansnans。在在matlabmatlab里,

31、空矩陣不等于任何非零矩里,空矩陣不等于任何非零矩陣陣( (或標(biāo)量或標(biāo)量) )。 例例3434 鏈接 空矩陣和空矩陣和nansnans。48nansnans和空矩陣特性和空矩陣特性: :數(shù)據(jù)數(shù)據(jù) a=1 2 nan inf nan表達式表達式 結(jié)果結(jié)果2*a 2 4 nan inf nan(a=nan) 0 0 0 0 0(a=nan) 1 1 1 1 1isnan(a) 0 0 1 0 1y=find(a=0) y= isempty(y) 1 (y=0) find(y=0) 4.1 4.1 字符串字符串一個字符串是由單引號括起來的簡單文本。一個字符串是由單引號括起來的簡單文本。實質(zhì)是實質(zhì)是as

32、ciiascii的特殊數(shù)值數(shù)組,字符串是其外的特殊數(shù)值數(shù)組,字符串是其外在表現(xiàn)形式。在表現(xiàn)形式。字符串里的每個字符是數(shù)組里的一個元素,字符串里的每個字符是數(shù)組里的一個元素,字符串的存儲要求每個字符字符串的存儲要求每個字符8 8個字節(jié)。個字節(jié)。 例例41 41 鏈接 字符串字符串。4.24.2字符串轉(zhuǎn)換字符串轉(zhuǎn)換把數(shù)值轉(zhuǎn)換成字符串或從字符串中提取數(shù)值把數(shù)值轉(zhuǎn)換成字符串或從字符串中提取數(shù)值數(shù)據(jù)。數(shù)據(jù)。abs abs 字符串到字符串到asciiascii轉(zhuǎn)換轉(zhuǎn)換setstr asciisetstr ascii轉(zhuǎn)換成字符串轉(zhuǎn)換成字符串int2str int2str 整數(shù)轉(zhuǎn)換成字符串整數(shù)轉(zhuǎn)換成字符串nu

33、m2str num2str 數(shù)字轉(zhuǎn)換成字符串?dāng)?shù)字轉(zhuǎn)換成字符串str2num str2num 字符串轉(zhuǎn)換成數(shù)字字符串轉(zhuǎn)換成數(shù)字fprintf fprintf 把格式化的文本寫到文把格式化的文本寫到文件中或顯示屏上件中或顯示屏上sprintf sprintf 用格式控制,數(shù)字轉(zhuǎn)換用格式控制,數(shù)字轉(zhuǎn)換成字符串成字符串sscanf sscanf 用格式控制,字符串轉(zhuǎn)用格式控制,字符串轉(zhuǎn)換成數(shù)字換成數(shù)字dec2hex dec2hex 十進制數(shù)到十六進制字符串轉(zhuǎn)換十進制數(shù)到十六進制字符串轉(zhuǎn)換hex2dec hex2dec 十六進制字符串轉(zhuǎn)換成十進制數(shù)十六進制字符串轉(zhuǎn)換成十進制數(shù)hex2num hex2nu

34、m 十六進制字符串轉(zhuǎn)換成十六進制字符串轉(zhuǎn)換成ieeeieee浮點數(shù)浮點數(shù)lower lower 字符串轉(zhuǎn)換成小寫字符串轉(zhuǎn)換成小寫upper upper 字符串轉(zhuǎn)換成大寫字符串轉(zhuǎn)換成大寫str2mat str2mat 字符串轉(zhuǎn)換成一個文本矩陣字符串轉(zhuǎn)換成一個文本矩陣eval(string) eval(string) 求字符串的值求字符串的值feval(fun,x) feval(fun,x) 求由字符串給定的函數(shù)值求由字符串給定的函數(shù)值 例例4242字符串轉(zhuǎn)換字符串轉(zhuǎn)換0101。鏈接 鏈接 例例4343字符串轉(zhuǎn)換字符串轉(zhuǎn)換0202。鏈接4.34.3字符串函數(shù)字符串函數(shù)findstr findstr

35、 從一個字符串內(nèi)找出子字符串從一個字符串內(nèi)找出子字符串blanks(n) blanks(n) 返回一個有返回一個有n n個空格的字符串個空格的字符串deblank deblank 去掉字符串中后拖的空格去掉字符串中后拖的空格strcmp strcmp 兩個字符串相同,返回真值兩個字符串相同,返回真值strrep strrep 用一個字符串替換另一個字符串用一個字符串替換另一個字符串strtok strtok 在一個字符串里找出第一個標(biāo)記在一個字符串里找出第一個標(biāo)記ischar (isstr) ischar (isstr) 字符串存在時返回真值字符串存在時返回真值isletter islette

36、r 字母存在時返回真值字母存在時返回真值isspace isspace 空格字符存在時返回真值空格字符存在時返回真值 例例44 44 鏈接鏈接 字符串函數(shù)。字符串函數(shù)。 535.1 for 5.1 for 循環(huán)循環(huán) for循環(huán)允許一組命令以固定的和預(yù)定的次數(shù)重復(fù)。for循環(huán)的一般形式:for x = array commandsendcommands按數(shù)組中的每一列執(zhí)行一次。在每次迭代中,x被指定為數(shù)組的下一列,即在第n次循環(huán)中,x=array(:, n)。例51%for循環(huán)for n=1:10 x(n)=sin(n*pi/10) end x54注意點:注意點:1.for循環(huán)不能用其內(nèi)重新賦值

37、循環(huán)變量n來終止。%for循環(huán)不能用for循環(huán)內(nèi)重新賦值循環(huán)變量n來終止。for n=1:10 x(n)=sin(n*pi/10) n=11 end x2.在for循環(huán)內(nèi)接受任何有效的matlab數(shù)組。data=3 9 45 6; 7 16 -1 5 for n=data %循環(huán)按數(shù)組中的列數(shù)執(zhí)行 x=n(1)-n(2) n end3.for循環(huán)可按需要嵌套。 for n=1:5 for m=5:-1:1 a(n,m)=n2+m2; end disp(n) end a4.當(dāng)有一個等效的數(shù)組方法能解決問題時,應(yīng)避免用for循環(huán)。 n=1:10; x=sin(n*pi/10)5.為了提高速度,在f

38、or循環(huán)(while循環(huán))被執(zhí)行之前,應(yīng)預(yù)先分配數(shù)組。 %為了得到最大的速度,在for循環(huán)(while循環(huán))被執(zhí)行之前,應(yīng)預(yù)先分配數(shù)組。%例如,前面所考慮的第一種情況(for循環(huán)00),在for循環(huán)內(nèi)每執(zhí)行一次命令,變量x的大小增加1。%迫使matlab每通過一次循環(huán)要花費時間對x分配更多的內(nèi)存。x=zeros(1,10); % preallocated memory for xfor n=1:10 x(n)=sin(n*pi/10); end565.2 while5.2 while循環(huán)循環(huán) while 循環(huán)以不定的次數(shù)求一組語句的值。while循環(huán)的一般形式: while expressio

39、n commands end 若表達式里的所有元素為真,就執(zhí)行while和end 語句之間的commands。 通常,表達式的求值給出一個標(biāo)量,但數(shù)組也同樣有效。此時,所得到數(shù)組的所有元素必須都為真。例57鏈接 while循環(huán)。%while 循環(huán)num=0;eps=1;while (1+eps)1 % eps=2.2204e-016 eps=eps/2; num=num+1;end num eps%這個例子表明了計算特殊matlab值eps的一種方法,它是一個可加到1,而使結(jié)果以有限精度大于1的最小數(shù)值。%這里我們用大寫eps,因此matlab的eps的值不會被覆蓋掉。在這個例子里,eps以1

40、開始。%只要(1+eps)1為真(非零),就一直求while循環(huán)內(nèi)的命令值。%由于eps不斷地被2除,eps逐漸變小以致于eps+1不大于1。%(記住,發(fā)生這種情況是因為計算機使用固定數(shù)的數(shù)值來表示數(shù)。%matlab用16位,因此,我們只能期望eps接近10-16。) 在這一點上,(1+eps)1是假(零),于是while循環(huán)結(jié)束。585.3 if-else-end 5.3 if-else-end 結(jié)構(gòu)結(jié)構(gòu) 命令序列根據(jù)對關(guān)系的檢驗有條件地執(zhí)行。最簡單的if-else-end結(jié)構(gòu): if expression commands end 若表達式中的所有元素為真(非零),那么就執(zhí)行if和end語

41、言之間的commands。 例58 鏈接 if循環(huán)00。 %用if-else-end結(jié)構(gòu)來決策,提出一種合理的方法來跳出或中斷for循環(huán)和while循環(huán)eps=1;for num=1:1000eps=eps/2; if(1+eps)0) % test for strict first f=2;elseif all(y=0) f=1;elseif all(y0) % test for strict first f=-2;elseif all(y=0) f=-1;else f=0; % otherwise responseend645.5 5.5 控制命令控制命令break break :跳出循環(huán)

42、:跳出循環(huán) 例例58%58%用用if-else-endif-else-end結(jié)構(gòu)來決策結(jié)構(gòu)來決策, ,提出一種合理的方法來跳出提出一種合理的方法來跳出或中斷或中斷forfor循環(huán)和循環(huán)和whilewhile循環(huán)循環(huán)eps=1;eps=1;for num=1:1000for num=1:1000eps=eps/2; eps=eps/2; if(1+eps)=1 % if(1+eps)1 continue; %程序執(zhí)行continue 語句時,matlab跳到for循環(huán)的end處,結(jié)束這一次for循環(huán)。 end keyboard % keyboard 停止程序的運行,將控制權(quán)交給鍵盤。 retur

43、n % return 退出函數(shù)或程序,返回控制權(quán)。 eps1 eps2=eps1*2 break end第六章 m文件函數(shù)和腳本文件matlabmatlab兩種工作模式:工作空間窗口直接輸兩種工作模式:工作空間窗口直接輸入簡單命令;入簡單命令;mm文件編程。文件編程。前者:適用于命令行較簡單、輸入較方便,處前者:適用于命令行較簡單、輸入較方便,處理的問題較特殊、沒有一定重復(fù)性和普遍性、理的問題較特殊、沒有一定重復(fù)性和普遍性、差錯處理較簡單的情況。差錯處理較簡單的情況。后者:進行大量重復(fù)性計算和輸入。后者:進行大量重復(fù)性計算和輸入。6.1 m6.1 m文件定義、規(guī)則和屬性文件定義、規(guī)則和屬性1.

44、 m1. m文件簡介文件簡介形式上: matlab程序文件是一個簡單asc碼標(biāo)準(zhǔn)文本文件,擴展名一律用“.m”形式。因為是文本文件,所以任何文字處理軟件都可以對它進行編寫和修改;特征上: matlab的語法比一般的高級語言都要簡單,程序容易調(diào)試,人機交互性強;功能上: m文件大大擴展了matlab的能力。 (matlab的各種工具箱都由m文件組成。) )m文件: 編寫、修改和擴充函數(shù)和命令。m文件兩種形式:命令文件(腳本文件script-file);函數(shù)文件(function-file)。2. 2. 命令文件命令文件 建立方法:將輸入的所有指令按順序放到一個擴展名為“m”的文本文件中,不需要預(yù)

45、先定義。運行一個命令文件等價于從命令窗口中按順序連續(xù)運行文件中的指令。命令文件中的語句可以訪問matlab工作空間中的所有變量。在命令文件運行過程中產(chǎn)生的變量等價于直接從matlab工作空間建立的變量,均是全局變量,任何其他的命令文件和函數(shù)都可以訪問這些變量。建立命令文件,并繪制寶石項鏈圖。 t=(0:0.02:2)*pi; x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,b-,x,y,z,bd) %畫三維圖 view(-80,60) %定義視角,方位角及仰角box on %打開框狀坐標(biāo)軸legend(鏈子,寶石); %插入圖形說明將文件保存在matlab搜索

46、路徑上。在命令窗口中直接輸入文件名,運行。3. 函數(shù)文件函數(shù)文件 如果m文件的開頭第一行是function,此文件是函數(shù)文件(function file)。在matlab中提供的大部分命令都由函數(shù)文件定義。例62 鏈接 函數(shù)文件function y = fliplr(x) %函數(shù)定義行 % fliplrflip matrix in the left/right direction. % h1行%fliplr(x) returns x with row preserved and columns flipped%in the left/right direction.%x = 1 2 3 bec

47、omes 3 2 1% 4 5 6 6 5 4%see also flipud, rot90. %h1行至此為在線幫助%copyright (c) 1984-94 by the mathworks, inc. if ndims(x)=2,error(x must be a 2-d matrix.); end %函數(shù)體 ndims(x)=length(size(a) m, n = size(x); y = x(: , n : -1 : 1); 函數(shù)文件和命令文件類似之處:都是擴展名為“.m”的文本文件,且都是由文本編輯器所創(chuàng)建的外部文本文件。函數(shù)文件和命令文件的區(qū)別:命令文件的變量在文件執(zhí)行完程

48、序后仍然保留在內(nèi)存中,而函數(shù)文件內(nèi)定義的變量僅在函數(shù)文件內(nèi)部起作用,當(dāng)函數(shù)文件執(zhí)行完程序后,這些內(nèi)部變量將被清除。(1 1)函數(shù)文件的構(gòu)成)函數(shù)文件的構(gòu)成: :函數(shù)定義行(function declaration line);h1行(the first help text line):第一行幫助行,名為h1 行,是由lookfor 命令搜索的行。在線函數(shù)幫助文件(help text);到第一個非注釋空行為止的注釋行是幫助文本注釋;函數(shù)體(function body)。例63 鏈接函數(shù)文件02。function y = linspace(d1, d2, n)% linspace linearly

49、 spaced vector.%linspace(x1, x2) generates a row vector of 100 linearly%equally spaced points between x1 and x2.%linspace(x1, x2, n) generates n points between x1 and x2.%see also logspace, :.%copyright (c) 1984-94 by the mathworks, inc.if nargin(linspace) = 2 n = 100;endy = d1+(0:n-1)*(d2-d1)/(n-1)

50、 ;(2 2)mm文件函數(shù)的規(guī)則和屬性文件函數(shù)的規(guī)則和屬性a.函數(shù)名和文件名必須相同。b.函數(shù)可以有零個或更多個輸入?yún)⒘考拜敵鰠⒘俊#ɡ纾汉瘮?shù)size)調(diào)用函數(shù)時,按少于等于函數(shù)m文件中所規(guī)定的輸入和輸出變量數(shù)進行調(diào)用。c.當(dāng)函數(shù)有一個以上輸出變量時,輸出變量包含在括號內(nèi)。 (例如:函數(shù)size)函數(shù)nargin給出函數(shù)輸入?yún)⒘總€數(shù);函數(shù)nargout給出函數(shù)輸出參量個數(shù)。d.函數(shù)可以遞歸調(diào)用,即m文件函數(shù)能調(diào)用它們本身。當(dāng)函數(shù)m文件到達m文件終點,或者碰到返回命令return,就結(jié)束執(zhí)行且返回。用遞規(guī)調(diào)用形式計算n的階乘。function y=ff(n) if n=1 y=1; retur

51、n; else y=n*ff(n-1); return; endff(10) ans = 3628800return把控制權(quán)交給主調(diào)函數(shù)或命令窗口。e.函數(shù)的工作空間與matlab的工作空間是分開的。 函數(shù)內(nèi)變量與matlab工作空間之間唯一的聯(lián)系是函數(shù)的輸入和輸出變量。函數(shù)任一輸入變量值發(fā)生變化,僅表現(xiàn)在函數(shù)內(nèi),不影響 matlab工作空間的變量。函數(shù)內(nèi)所創(chuàng)建的變量只駐留在函數(shù)的工作空間,且只在函數(shù)執(zhí)行期間存在,之后消失。 function y=ff(n)if n=1 y=1; return;else mfilename whos disp(8) y=n*ff(n-1); return;en

52、d ff(8)f.函數(shù)m文件內(nèi)可以調(diào)用腳本文件。此時,腳本文件查看函數(shù)工作空間,不查看matlab工作空間。g.當(dāng)調(diào)用一個函數(shù)時,輸入變量不會拷貝到函數(shù)的工作空間,但值在函數(shù)內(nèi)可讀。若改變輸入變量內(nèi)的任何值,輸入變量會拷貝到函數(shù)工作空間。h.若變量是全局變量, 函數(shù)可以與其它函數(shù)、matlab工作空間及遞歸調(diào)用本身共享變量。實際編程中,應(yīng)盡量避免使用全局變量。i. matlab函數(shù)error用來提示函數(shù)使用不當(dāng),它在命令窗口顯示一個字符串,放棄函數(shù)執(zhí)行,把控制權(quán)返回給鍵盤。 if length(val)1 error(val must be a scalar.) endj.若函數(shù)只需字符串輸入,且沒有產(chǎn)生輸出參量,m文件函數(shù)可像matlab命令一樣工作。命令和函數(shù)之間差別命令和函數(shù)之間差別:命令沒有輸出參量;函數(shù)通常把數(shù)據(jù)放進一個或多個輸出參量中,且必須用逗號分開.命令的輸入?yún)⒘坎挥脠A括弧括起來;函數(shù)輸入?yún)⒘坑脠A括弧括起來。事實上,事實上,matlabmatlab命令本身能像函數(shù)那樣調(diào)用。命令本身能像函數(shù)那樣調(diào)用。例如:例如: whatsnew mytoolbox matlab實際上用函數(shù)調(diào)用: whatsnew(mytoolbox)命令命令 函數(shù)函數(shù)format short g format(short, g)save x y z save(x,y,z)hold on

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論