MATLAB 程式设计入门篇初探MATLAB.ppt
MATLAB 程式設計入門篇初探MATLAB,張智星(Roger Jang)jangmirlab.orghttp:/mirlab.org/jang台大資工系 多媒體檢索實驗室,有趣的指令,安裝MATLAB後,你會想做的事(請直接在命令視窗內的提示符號“”之後輸入下列指令):檢查版本versionver測試電腦速度:bench,2-1使用變數與基本運算,一般數學符號運算在MATLAB 命令視窗內的提示符號()之後輸入運算式,並按入 Enter 鍵即可:(5*2+3.5)/5 ans=2.7000其中ans是內建的變數,用於儲存每次的運算結果。,我們也可以將運算結果送到另一個變數:x=(5*2+3.5)/5 x=2.7000若不想讓 MATLAB 每次都顯示運算結果,只需在運算式最後加上分號即可:y=(5*2+3.5)/5;,變數命名規則與使用,第一個字元必需是英文,後面可以接數字或是底線。最多只能有 31 個字母,MATLAB 會忽略多餘字母。MATLAB 在使用變數時,不需預先經過變數宣告(Variable Declaration)的程序,而且所有數值變數均以預設的 double 資料型態(佔用8個bytes)來儲存。,加入註解,若要加入註解(Comments),可以使用百分比符號(%)例如:y=(5*2+3.5)/5;%將運算結果儲存在變數 y,但不用顯示於螢幕 z=y2%將運算結果儲存在變數 z,並顯示於螢幕 z=7.2900,2-2向量與矩陣的處理,MATLAB 中的變數還可用來儲存向量(Vectors)及矩陣(Matrix),以進行各種運算,例如:s=1 3 5 2;%注意 的使用,及各數字間的空白間隔 t=2*s+1 t=3 7 11 5,矩陣的各種處理,MATLAB 亦可取出向量中的一個元素或一部份來做運算,例如:t(3)=2%將向量 t 的第三個元素更改為 2 t=3 7 2 5 t(6)=10%在向量 t 加入第六個元素,其值為 10 t=3 7 2 5 0 10 t(4)=%將向量 t 的第四個元素刪除,代表空集合 t=3 7 2 0 10,建立大小為 mn的矩陣,常用名詞:橫列row,直行column欲建立矩陣,可在每一橫列結尾加上分號(;),例如:A=1 2 3 4;5 6 7 8;9 10 11 12;%建立 34 的矩陣 A A%顯示矩陣 A 的內容A=1 2 3 4 5 6 7 8 9 10 11 12,mxn矩陣的各種處理(I),A(2,3)=5%將矩陣 A 第二列、第三行的元素值,改變為 5 A=1 2 3 4 5 6 5 8 9 10 11 12 B=A(2,1:3)%取出矩陣 A 的第二橫列、第一至第三直行,並儲存成矩陣 B B=5 6 5,mxn矩陣的各種處理(II),A=A B%將矩陣 B 轉置後、再以行向量併入矩陣 A A=1 2 3 4 5 5 6 5 8 6 9 10 11 12 5 A(:,2)=%刪除矩陣 A 第二行(:代表所有橫列,代表空矩陣)A=1 3 4 5 5 5 8 6 9 11 12 5,mxn矩陣的各種處理(III),A=A;4 3 2 1%在原矩陣 A 中,加入第四列 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,mxn矩陣的各種處理(IV),B=A(:,4 2 3)%從矩陣 A 抽出第4,2,3行 B=6 5 8 5 11 12 A=magic(5);B=A(2 5 3,1 4)B=23 14 11 2 4 20,2-3常用數學函數,MATLAB 是一個科學計算軟體,因此可以支援很多常用到的數學函數y=abs(x)取 x 的絕對值y=sin(x)取 x 的正弦值y=exp(x)自然指數 exp(x)y=log(x)自然對數 ln(x)MATLAB 也支援複數運算,通常以 i 或 j 代表單位虛數,向量矩陣的運算,有一些函數是特別針對向量而設計y=min(x)向量 x 的極小值y=max(x)向量 x 的極大值y=mean(x)向量 x 的平均值y=sum(x)向量 x 的總和y=sort(x)向量 x 的排序試看看:若x是矩陣,上述指令的功能是?可以使用 x=magic(5)來進行測試。,線上支援,help:查詢指令的用法(顯示於命令視窗)。例如:help meandoc:查詢指令的用法(顯示於線上支援視窗)例如:doc meanlookfor:用來尋找未知的指令。找到所需的指令後,即可用 help 進一步找出其用法。helpwin 或 helpdesk:顯示線上支援視窗(其效果等同於直接點選 MATLAB 命令視窗工作列的圖示)。,2-4程式流程控制,MATLAB 提供重複迴圈(Loops)及條件判斷(Conditions)等程式流程控制(Flow Control)的指令for 迴圈是最常用到的重複運算,其中迴圈變數會依次取用每個行向量來進行運算,格式如下:for 變數=向量 運算式;end,流程控制,while 迴圈(While-loop)while 條件式 運算式;endif else end if 條件式 運算式;else 運算式;end,2-5 M檔案,M檔案附檔名為m的檔案,可看成是 MATLAB 的程式檔M檔案可分兩類Script(底稿、腳本):所有變數均保留Function(函數、函式):只有輸出入變數被保留,其它所有變數會隨著函數執行結束而消失,M檔案-底稿,若要一次執行大量的 MATLAB 指令,可將這些指令存放於一個副檔名為 m 的檔案,並在 MATLAB 指令提示號下鍵入此檔案的主檔名即可。所有變數都會被保留在工作空間,可以隨時檢查其值。pwd%顯示目前的工作目錄 cd d:matlabBookMATLAB程式設計:入門篇02-初探 MATLAB type myTest.m%顯示 myTest.m 的內容 myTest%執行 myTest.m,M檔案-函數,函數提供更好的包裝,可以一再重複使用,而且只有輸入和輸出變數被保留下來,避免變數相衝。範例:,function len=vecLength(vec)%vecLength:Return the length of a vectorsum=0;for i=1:length(vec)sum=sum+vec(i)*vec(i);endlen=sqrt(sum);,M檔案-函數:遞迴函數,非遞迴函數,遞迴函數,function out=fact01(n)out=1;for i=1:nout=out*i;end,function out=fact02(n)if n=1out=1;returnendout=n*fact02(n-1);,2-6 搜尋路徑,與搜尋路徑相關指令path:檢視 MATLAB 已設定的搜尋路徑which:查詢某一特定指令所在的搜尋路徑addpath:將目錄加入 MATLAB 的搜尋路徑rmpath:將目錄從 MATLAB 的搜尋路徑移除,2-7工作空間與變數的儲存及載入,MATLAB 在進行各種運算時,會將變數儲存在記憶體內,這些儲存變數的記憶體空間稱為基本工作空間(Base Workspace)或簡稱工作空間(Workspace)who:檢視現存於工作空間(Workspace)的變數,whos:列出工作空間變數的詳細資料clear:刪除工作空間的變數save:儲存工作空間的變數,檢視工作空間變數的其他方式,使用 clear 指令來清除或刪除工作空間內的某一特定或所有變數,以避免記憶體的閒置與浪費不加任何選項(Options)時,save 指令會將工作空間內的變數以二進制(Binary)的方式儲存至副檔名為 mat 的檔案save:將工作空間的所有變數儲存到名為 matlab.mat 的 二進制檔案。save filename:將工作空間所有變數儲存到名為 filename.mat 的二進制檔案。save filename x y z:將變數 x、y、z 儲存到名為 filename.mat 的二進制檔案。,2-8離開 MATLAB,在命令視窗內,鍵入 exit 指令。在命令視窗內,鍵入 quit 指令。直接關閉 MATLAB 的命令視窗。,