![matlab入門教程.doc_第1頁](http://file.renrendoc.com/FileRoot1/2020-2/4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d41.gif)
![matlab入門教程.doc_第2頁](http://file.renrendoc.com/FileRoot1/2020-2/4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d42.gif)
![matlab入門教程.doc_第3頁](http://file.renrendoc.com/FileRoot1/2020-2/4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d43.gif)
![matlab入門教程.doc_第4頁](http://file.renrendoc.com/FileRoot1/2020-2/4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d44.gif)
![matlab入門教程.doc_第5頁](http://file.renrendoc.com/FileRoot1/2020-2/4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d4/49c392cd-b6cf-4cd2-a2b6-99e03528c3d45.gif)
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1-1、基本運算與函數 在MATLAB下進行基本數學運算,只需將運算式直接打入提示號()之后,并按入Enter鍵即可。例如: (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB會將運算結果直接存入一變數ans,代表MATLAB運算后的答案(Answer)并顯示其數值于熒幕上。我們也可將上述運算式的結果設定給另一個變數x: x = (5*2+1.3-0.8)*102/25 x = 42 此時MATLAB會直接顯示x的值。由上例可知,MATLAB認識所有一般常用到的加(+)、減(-)、乘(*)、除(/)的數學運算符號,以及冪次運算()。 小提示: MATLAB將所有變數均存成double的形式,所以不需經過變數宣告(Variable declaration)。MATLAB同時也會自動進行記憶體的使用和回收,而不必像C語言,必須由使用者指定。這些功能使得MATLAB易學易用,使用者可專心致力于撰寫程序,而不必被軟體枝節(jié)問題所干擾。 若不想讓MATLAB每次都顯示運算結果,只需在運算式最后加上分號(;)即可,如下例: y = sin(10)*exp(-0.3*42); 若要顯示變數y的值,直接鍵入y即可: y y =-0.0045 在上例中,sin是正弦函數,exp是指數函數,這些都是MATLAB常用到的數學函數。下表即為MATLAB常用的基本數學函數及三角函數: 小整理:MATLAB常用的基本數學函數 abs(x):純量的絕對值或向量的長度 angle(z):復 數z的相角(Phase angle) sqrt(x):開平方 real(z):復數z的實部 imag(z):復數z的虛 部 conj(z):復數z的共軛復數 round(x):四舍五入至最近整數 fix(x):無論正負,舍去小數至最近整數 floor(x):地板函數,即舍去正小數至最近整數 ceil(x):天花板函數,即加入正小數至最近整數 rat(x):將實數x化為分數表示 rats(x):將實數x化為多項分數展開 sign(x):符號函數 (Signum function)。 當x0時,sign(x)=1。 小整理:MATLAB常用的三角函數 sin(x):正弦函數 cos(x):余弦函數 tan(x):正切函數 asin(x):反正弦函數 acos(x):反余弦函數 atan(x):反正切函數 atan2(x,y):四象限的反正切函數 sinh(x):超越正弦函數 cosh(x):超越余弦函數 tanh(x):超越正切函數 asinh(x):反超越正弦函數 acosh(x):反超越余弦函數 atanh(x):反超越正切函數 變數也可用來存放向量或矩陣,并進行各種運算,如下例的列向量(Row vector)運算: x = 1 3 5 2; y = 2*x+1 y = 3 7 11 5 小提示:變數命名的規(guī)則 1. 第一個字母必須是英文字母 2. 2.字母間不可留空格 3. 3.最多只能有19個字母,MATLAB會忽略多余字母 我們可以隨意更改、增加或刪除向量的元素: y(3) = 2 % 更改第三個元素 y =3 7 2 5 y(6) = 10 % 加入第六個元素 y = 3 7 2 5 0 10 y(4) = % 刪除第四個元素, y = 3 7 2 0 10 在上例中,MATLAB會忽略所有在百分比符號(%)之后的文字,因此百分比之后的文字均可視為程式的注解(Comments)。MATLAB亦可取出向量的一個元素或一部份來做運算: x(2)*3+y(4) % 取出x的第二個元素和y的第四個元素來做運算 ans = 9 y(2:4)-1 % 取出y的第二至第四個元素來做運算 ans = 6 1 -1 在上例中,2:4代表一個由2、3、4組成的向量 若對MATLAB函數用法有疑問,可隨時使用help來尋求線上支援(on-line help):help linspace 小整理:MATLAB的查詢命令 help:用來查詢已知命令的用法。例如已知inv是用來計算反矩陣,鍵入help inv即可得知有關inv命令的用法。(鍵入help help則顯示help的用法,請試看看?。?lookfor:用來尋找未知的命令。例如要尋找計算反矩陣的命令,可鍵入 lookfor inverse,MATLAB即會列出所有和關鍵字inverse相關的指令。找到所需的命令后 ,即可用help進一步找出其用法。(lookfor事實上是對所有在搜尋路徑下的M檔案進行關鍵字對第一注解行的比對,詳見后敘。) 將列向量轉置(Transpose)后,即可得到行向量(Column vector): z = x z = 4.0000 5.2000 6.4000 7.6000 8.8000 10.0000 不論是行向量或列向量,我們均可用相同的函數找出其元素個數、最大值、最小值等: length(z) % z的元素個數 ans = 6 max(z) % z的最大值 ans = 10 min(z) % z的最小值 ans = 4 小整理:適用于向量的常用函數有: min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值 mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位數 std(x): 向量x的元素的標準差 diff(x): 向量x的相鄰元素的差 sort(x): 對向量x的元素進行排序(Sorting) length(x): 向量x的元素個數 norm(x): 向量x的歐氏(Euclidean)長度 sum(x): 向量x的元素總和 prod(x): 向量x的元素總乘積 cumsum(x): 向量x的累計元素總和 cumprod(x): 向量x的累計元素總乘積 dot(x, y): 向量x和y的內 積 cross(x, y): 向量x和y的外積 (大部份的向量函數也可適用于矩陣,詳見下述。) 若要輸入矩陣,則必須在每一列結尾加上分號(;),如下例: A = 1 2 3 4; 5 6 7 8; 9 10 11 12; A = 1 2 3 4 5 6 7 8 9 10 11 12 同樣地,我們可以對矩陣進行各種處理: A(2,3) = 5 % 改變位于第二列,第三行的元素值 A = 1 2 3 4 5 6 5 8 9 10 11 12 B = A(2,1:3) % 取出部份矩陣B B = 5 6 5 A = A B % 將B轉置后以行向量并入A A = 1 2 3 4 5 5 6 5 8 6 9 10 11 12 5 A(:, 2) = % 刪除第二行(:代表所有列) A = 1 3 4 5 5 5 8 6 9 11 12 5 A = A; 4 3 2 1 % 加入第四列 A = 1 3 4 5 5 5 8 6 9 11 12 5 4 3 2 1 A(1 4, :) = % 刪除第一和第四列(:代表所有行) A = 5 5 8 6 9 11 12 5 這幾種矩陣處理的方式可以相互疊代運用,產生各種意想不到的效果,就看各位的巧思和創(chuàng)意。 小提示:在MATLAB的內部資料結構中,每一個矩陣都是一個以行為主(Column-oriented )的陣列(Array)因此對于矩陣元素的存取,我們可用一維或二維的索引(Index)來定址。舉例來說,在上述矩陣A中,位于第二列、第三行的元素可寫為A(2,3) (二維索引)或A(6)(一維索引,即將所有直行進行堆疊后的第六個元素)。 此外,若要重新安排矩陣的形狀,可用reshape命令: B = reshape(A, 4, 2) % 4是新矩陣的列數,2是新矩陣的行數 B = 5 8 9 12 5 6 11 5 小提示: A(:)就是將矩陣A每一列堆疊起來,成為一個行向量,而這也是MATLAB變數的內部儲存方式。以前例而言,reshape(A, 8, 1)和A(:)同樣都會產生一個8x1的矩陣。 MATLAB可在同時執(zhí)行數個命令,只要以逗號或分號將命令隔開: x = sin(pi/3); y = x2; z = y*10,z = 7.5000 若一個數學運算是太長,可用三個句點將其延伸到下一行: z = 10*sin(pi/3)* . sin(pi/3); 若要檢視現存于工作空間(Workspace)的變數,可鍵入who: who Your variables are: testfile x 這些是由使用者定義的變數。若要知道這些變數的詳細資料,可鍵入: whos Name Size Bytes Class A 2x4 64 double array B 4x2 64 double array ans 1x1 8 double array x 1x1 8 double array y 1x1 8 double array z 1x1 8 double array Grand total is 20 elements using 160 bytes 使用clear可以刪除工作空間的變數: clear A A ? Undefined function or variable A. 另外MATLAB有些永久常數(Permanent constants),雖然在工作空間中看不 到,但使用者可直接取用,例如: pi ans = 3.1416 下表即為MATLAB常用到的永久常數。 小整理:MATLAB的永久常數 i或j:基本虛數單位eps:系統(tǒng)的浮點(Floating-point)精確度 inf:無限大, 例如1/0 nan或NaN:非數值(Not a number) ,例如0/0 pi:圓周率 p(= 3.1415926.) realmax:系統(tǒng)所能表示的最大數值 realmin:系統(tǒng)所能表示的最小數值 nargin: 函數的輸入引數個數 nargin: 函數的輸出引數個數 1-2、重復命令 最簡單的重復命令是for循環(huán)(for-loop),其基本形式為: for 變數 = 矩陣; 運算式; end 其中變數的值會被依次設定為矩陣的每一行,來執(zhí)行介于for和end之間的運算式。因此,若無意外情況,運算式執(zhí)行的次數會等于矩陣的行數。 舉例來說,下列命令會產生一個長度為6的調和數列(Harmonic sequence): x = zeros(1,6); % x是一個16的零矩陣 for i = 1:6, x(i) = 1/i; end 在上例中,矩陣x最初是一個16的零矩陣,在for循環(huán)中,變數i的值依次是1到6,因此矩陣x的第i個元素的值依次被設為1/i。我們可用分數來顯示此數列: format rat % 使用分數來表示數值 disp(x) 1 1/2 1/3 1/4 1/5 1/6 for循環(huán)可以是多層的,下例產生一個16的Hilbert矩陣h,其中為于第i列、第j行的元素為 h = zeros(6); for i = 1:6, for j = 1:6, h(i,j) = 1/(i+j-1); end end disp(h) 1 1/2 1/3 1/4 1/5 1/6 1/2 1/3 1/4 1/5 1/6 1/7 1/3 1/4 1/5 1/6 1/7 1/8 1/4 1/5 1/6 1/7 1/8 1/9 1/5 1/6 1/7 1/8 1/9 1/10 1/6 1/7 1/8 1/9 1/10 1/11 小提示:預先配置矩陣 在上面的例子,我們使用zeros來預先配置(Allocate)了一個適當大小的矩陣。若不預先配置矩陣,程式仍可執(zhí)行,但此時MATLAB需要動態(tài)地增加(或減小)矩陣的大小,因而降低程式的執(zhí)行效率。所以在使用一個矩陣時,若能在事前知道其大小,則最好先使用zeros或ones等命令來預先配置所需的記憶體(即矩陣)大小。 在下例中,for循環(huán)列出先前產生的Hilbert矩陣的每一行的平方和: for i = h, disp(norm(i)2); % 印出每一行的平方和 end 1299/871 282/551 650/2343 524/2933 559/4431 831/8801 在上例中,每一次i的值就是矩陣h的一行,所以寫出來的命令特別簡潔。 令一個常用到的重復命令是while循環(huán),其基本形式為: while 條件式; 運算式; end 也就是說,只要條件示成立,運算式就會一再被執(zhí)行。例如先前產生調和數列的例子,我們可用while循環(huán)改寫如下: x = zeros(1,6); % x是一個16的零矩陣 i = 1; while i 0.5, disp(Given random number is greater than 0.5.); end Given random number is greater than 0.5. 1-4、集合多個命令于一個M檔案 若要一次執(zhí)行大量的MATLAB命令,可將這些命令存放于一個副檔名為m的檔案,并在 MATLAB提示號下鍵入此檔案的主檔名即可。此種包含MATLAB命令的檔案都以m為副檔名,因此通稱M檔案(M-files)。例如一個名為test.m的M檔案,包含一連串的MATLAB命令,那么只要直接鍵入test,即可執(zhí)行其所包含的命令: pwd % 顯示現在的目錄 ans = D:MATLAB5bin cd c:datamlbook % 進入test.m所在的目錄 type test.m % 顯示test.m的內容 % This is my first test M-file. % Roger Jang, March 3, 1997 fprintf(Start of test.m!n); for i = 1:3, fprintf(i = %d - i3 = %dn, i, i3); end fprintf(End of test.m!n); test % 執(zhí)行test.m Start of test.m! i = 1 - i3 = 1 i = 2 - i3 = 8 i = 3 - i3 = 27 End of test.m! 小提示:第一注解行(H1 help line) test.m的前兩行是注解,可以使程式易于了解與管理。特別要說明的是,第一注解行通常用來簡短說明此M檔案的功能,以便lookfor能以關鍵字比對的方式來找出此M檔案。舉例來說,test.m的第一注解行包含test這個字,因此如果鍵入lookfor test,MATLAB即可列出所有在第一注解行包含test的M檔案,因而test.m也會被列名在內。 嚴格來說,M檔案可再細分為命令集(Scripts)及函數(Functions)。前述的test.m即為命令集,其效用和將命令逐一輸入完全一樣,因此若在命令集可以直接使用工作空間的變數,而且在命令集中設定的變數,也都在工作空間中看得到。函數則需要用到輸入引數(Input arguments)和輸出引數(Output arguments)來傳遞資訊,這就像是C語言的函數,或是FORTRAN語言的副程序(Subroutines)。舉例來說,若要計算一個正整數的階乘 (Factorial),我們可以寫一個如下的MATLAB函數并將之存檔于fact.m: function output = fact(n) % FACT Calculate factorial of a given positive integer. output = 1; for i = 1:n, output = output*i; end 其中fact是函數名,n是輸入引數,output是輸出引數,而i則是此函數用到的暫時變數。要使用此函數,直接鍵入函數名及適當輸入引數值即可: y = fact(5) y = 120 (當然,在執(zhí)行fact之前,你必須先進入fact.m所在的目錄。)在執(zhí)行fact(5)時, MATLAB會跳入一個下層的暫時工作空間(Temperary workspace),將變數n的值設定為5,然后進行各項函數的內部運算,所有內部運算所產生的變數(包含輸入引數n、暫時變數i,以及輸出引數output)都存在此暫時工作空間中。運算完畢后,MATLAB會將最后輸出引數output的值設定給上層的變數y,并將清除此暫時工作空間及其所含的所有變數。換句話說,在呼叫函數時,你只能經由輸入引數來控制函數的輸入,經由輸出引數來得到函數的輸出,但所有的暫時變數都會隨著函數的結束而消失,你并無法得到它們的值。 小提示:有關階乘函數 前面(及后面)用到的階乘函數只是純粹用來說明MATLAB的函數觀念。若實際要計算一個正整數n的階乘(即n!)時,可直接寫成prod(1:n),或是直接呼叫gamma函數:gamma(n-1)。 MATLAB的函數也可以是遞式的(Recursive),也就是說,一個函數可以呼叫它本身。 舉例來說,n! = n*(n-1)!,因此前面的階乘函數可以改成遞式的寫法: function output = fact(n) % FACT Calculate factorial of a given positive integer recursively. if n = 1, % Terminating condition output = 1; return; end output = n*fact(n-1); 在寫一個遞函數時,一定要包含結束條件(Terminating condition),否則此函數將會一再呼叫自己,永遠不會停止,直到電腦的記憶體被耗盡為止。以上例而言,n=1即滿足結束條件,此時我們直接將output設為1,而不再呼叫此函數本身。 1-5、搜尋路徑 在前一節(jié)中,test.m所在的目錄是d:mlbook。如果不先進入這個目錄,MATLAB就找不到你要執(zhí)行的M檔案。如果希望MATLAB不論在何處都能執(zhí)行test.m,那么就必須將d:mlbook加入MATLAB的搜尋路徑(Search path)上。要檢視MATLAB的搜尋路徑,鍵入path即可: path MATLABPATH d:matlab5toolboxmatlabgeneral d:matlab5toolboxmatlabops d:matlab5toolboxmatlablang d:matlab5toolboxmatlabelmat d:matlab5toolboxmatlabelfun d:matlab5toolboxmatlabspecfun d:matlab5toolboxmatlabmatfun d:matlab5toolboxmatlabdatafun d:matlab5toolboxmatlabpolyfun d:matlab5toolboxmatlabfunfun d:matlab5toolboxmatlabsparfun d:matlab5toolboxmatlabgraph2d d:matlab5toolboxmatlabgraph3d d:matlab5toolboxmatlabspecgraph d:matlab5toolboxmatlabgraphics d:matlab5toolboxmatlabuitools d:matlab5toolboxmatlabstrfun d:matlab5toolboxmatlabiofun d:matlab5toolboxmatlabtimefun d:matlab5toolboxmatlabdatatypes d:matlab5toolboxmatlabdde d:matlab5toolboxmatlabdemos d:matlab5toolboxtour d:matlab5toolboxsimulinksimulink d:matlab5toolboxsimulinkblocks d:matlab5toolboxsimulinksimdemos d:matlab5toolboxsimulinkdee d:matlab5toolboxlocal 此搜尋路徑會依已安裝的工具箱(Toolboxes)不同而有所不同。要查詢某一命令是在搜尋路徑的何處,可用which命令: which expo d:matlab5toolboxmatlabdemosexpo.m 很顯然c:datamlbook并不在MATLAB的搜尋路徑中,因此MATLAB找不到test.m這個M檔案: which test c:datamlbooktest.m 要將d:mlbook加入MATLAB的搜尋路徑,還是使用path命令: path(path, c:datamlbook); 此時d:mlbook已加入MATLAB搜尋路徑(鍵入path試看看),因此MATLAB已經看得到 test.m: which test c:datamlbooktest.m 現在我們就可以直接鍵入test,而不必先進入test.m所在的目錄。 小提示:如何在其啟動MATLAB時,自動設定所需的搜尋路徑? 如果在每一次啟動MATLAB后都要設定所需的搜尋路徑,將是一件很麻煩的事。有兩種方法,可以使MATLAB啟動后 ,即可載入使用者定義的搜尋路徑: 1.MATLAB的預設搜尋路徑是定義在matlabrc.m(在c:matlab之下,或是其他安裝MATLAB 的主目錄下),MATLAB每次啟動后,即自動執(zhí)行此檔案。因此你可以直接修改matlabrc.m ,以加入新的目錄于搜尋路徑之中。 2.MATLAB在執(zhí)行matlabrc.m時,同時也會在預設搜尋路徑中尋找startup.m,若此檔案存在,則執(zhí)行其所含的命令。因此我們可將所有在MATLAB啟動時必須執(zhí)行的命令(包含更改搜尋路徑的命令),放在此檔案中。 每次MATLAB遇到一個命令(例如test)時,其處置程序為: 1.將test視為使用者定義的變數。 2.若test不是使用者定義的變數,將其視為永久常數 。 3.若test不是永久常數,檢查其是否為目前工作目錄下的M檔案。 4.若不是,則由搜尋路徑尋找是否有test.m的檔案。 5.若在搜尋路徑中找不到,則MATLAB會發(fā)出嗶嗶聲并印出錯誤訊息。 以下介紹與MATLAB搜尋路徑相關的各項命令。 1-6、資料的儲存與載入 有些計算曠日廢時,那么我們通常希望能將計算所得的儲存在檔案中,以便將來可進行其他處理。MATLAB儲存變數的基本命令是save,在不加任何選項(Options)時,save會將變數以二進制(Binary)的方式儲存至副檔名為mat的檔案,如下述: save:將工作空間的所有變數儲存到名為matlab.mat的二進制檔案。 save filename:將工作空間的所有變數儲存到名為filename.mat的二進制檔案。 save filename x y z :將變數x、y、z儲存到名為filename.mat的二進制檔案。 以下為使用save命令的一個簡例: who % 列出工作空間的變數 Your variables are: B h j y ans i x z save test B y % 將變數B與y儲存至test.mat dir % 列出現在目錄中的檔案 . 2plotxy.doc fact.m simulink.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市區(qū)商業(yè)房產出租合同范本
- 單位短期租房合同范本
- 凈水材料供貨合同范本
- 2025年度工業(yè)自動化設備加工合同范本
- 休閑會所業(yè)績合同范本
- 產品銷售協議合同范例
- 機械臺班租賃合同范本
- 中鐵電氣化局員工合同范例
- 企業(yè)買房擔保合同范本
- 電纜敷設施工合同范本
- 2025年大慶職業(yè)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 山東省濟南市2024-2024學年高三上學期1月期末考試 地理 含答案
- 【課件】液體的壓強(課件)-2024-2025學年人教版物理八年級下冊
- 實施彈性退休制度暫行辦法解讀課件
- 冷凍食品配送售后服務體系方案
- 2024-2030年中國自動光學檢測儀(AOI)市場競爭格局與前景發(fā)展策略分析報告
- 銷售培訓合同范例
- 財務工作總結與計劃-財務經理總結與計劃
- 發(fā)酵饅頭課件教學課件
- 中華護理學會團體標準-氣管切開非機械通氣患者氣道護理
- YAMAHA(雅馬哈)貼片機編程培訓教材
評論
0/150
提交評論