1 / 42

MATLAB 簡介

MATLAB 簡介. 開啟 MATLAB. Workspace 顯示目前工作環境內定義的變數 Command History 紀錄曾經下過的指令 Command Window 我們將它譯為 操作視窗,就如同一個文字操作介面,有 >>  提示號,在提示號之後輸入指令. 開啟 MATLAB( 續 ). 什麼叫 M-file : 若在 Command Window 上面寫程式,按 Enter 後發現寫錯,很難直接修改。 例如把 err = 5e-15 改成 err = 1e-10

kamuzu
Download Presentation

MATLAB 簡介

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATLAB簡介

  2. 開啟MATLAB • Workspace 顯示目前工作環境內定義的變數 • Command History 紀錄曾經下過的指令 • Command Window 我們將它譯為 操作視窗,就如同一個文字操作介面,有>>  提示號,在提示號之後輸入指令

  3. 開啟MATLAB(續) • 什麼叫M-file: 若在 Command Window 上面寫程式,按Enter 後發現寫錯,很難直接修改。 例如把 err = 5e-15改成 err = 1e-10 寫程式最好另外開啟一個檔案,把程式的「原始碼」寫在裡面,這個檔案我們稱為M-file,此檔案是純文字檔,而且副檔名必須是m 。 優點: 1.方便修改。 2.不會因為關閉Matlab 而失去原始碼。

  4. MATLAB基本數學函數指令 • 首先 英文字母大小寫是不一樣的喔!!! • 常用的函式:

  5. MATLAB基本數學函數指令(續) • 常用的函式:

  6. MATLAB 複數及三角函數 • 三角函數

  7. MATLAB關係運算 • a大於(小於)b 可表 a>(<)b • a不等於b 可表 a~=b • a等於b 可表 a=b

  8. MATLAB邏輯運算

  9. MATLAB矩陣運算 • 矩陣 Ex: >> A = [1, 2; 3, 4] (逗號也可以用空白代替) A = 1 2 3 4 • 矩陣四則運算: 矩陣的加+,減-,乘 *,次方^都和普通計算一樣。 A.是指A矩陣裡的純量同時運算

  10. MATLAB矩陣運算(續) • 四則運算

  11. 矩陣的Transpose、Hermitian及矩陣的基本函式

  12. 矩陣的Transpose、Hermitian及矩陣的基本函式 (續)

  13. 矩陣的Transpose、Hermitian及矩陣的基本函式 (續) • Ex:(MATLAB) >> A=[1+2i,2+3i;3+4i,4+5i] >> A' ans = 1.0000 - 2.0000i 3.0000 - 4.0000i 2.0000 - 3.0000i 4.0000 - 5.0000i

  14. 製造特殊矩陣--0 與1 • MATLAB提供許多製造特殊矩陣的指令 • 例如:

  15. 代表矩陣元素的變數 說明矩陣位址: A(1,1)代表A的(1,1)位置元素 A(2,:)代表A的第二列 A(:,3)代表A的第三行 A(1,1:3) 代表A的第一列之第一行到第三行

  16. 冒號(:)指令 • 1:5 製造了以下序列 1 2 3 4 5 • 1:2:10製造了以下序列 1 3 5 7 9 • x = linspace(a,b,n+1): 產生一個等差序列,序列共有n+1 項,兩兩之差為(b-a)/n,而首項是a,尾項是b。 ps:x形成1乘(n+1)矩陣,x(1) = a,x(n+1)=b 

  17. 分號(;)指令 • 如果想要指派數值給一個變數,而不必看到MATLAB回應變數的值,可以在指令結束之後寫一個分號 ; 如果沒放; 則MATLAB會顯示 變數名稱 = 變數值 • 如果只有值而沒有變數名稱則MATLAB會顯示 ans= 值

  18. 分號(;)指令 (續) • 如果想要變數值但是不想要變數名稱就用disp • disp( )這就是把一個變數的值印出來的意思而且不再加“ans=” EX. >>disp(‘aaa’) 是顯示aaa這串句子 >>'aaa' 是顯示ans= aaa

  19. 逗號(,)指令 • a=10,b=100,c=200,和 a=10 b=100 c=200 是一樣的,差別只差在想不想要用一列敘述就解決程式。

  20. MATLAB的輸入、輸出 • MATLAB在使用數值的輸入和輸出,都是在Command Window底下做輸入。 • 輸入(input): EX: >>R = input(‘R=’); %輸入R值 >> k=det(R)

  21. MATLAB的輸入、輸出(續) • 輸出(disp、fprintf): disp( )先前討論過了,這裡討論fprintf( ) 語法: fprintf('The area is %8.5f\n', area) %8.5f是8位浮點數Fixed-point ,含5位小數 \n是避免下個輸出值和這個輸出值會太接近 EX: fprintf('pi= %12.5f\n',pi) 還有%d, %s等等,可執行help fprintf參閱說明

  22. break指令和MATLAB的迭代和邏輯分岔概念 • (for迴圈、if運算、while迴圈) break指令: 在下面的for迴圈、if運算、while迴圈中加入break 它的意思是:從 for迴圈、if運算、while迴圈中強制脫逃。 • for迴圈: • 語法: • for 變數= 向量或序列, 計算, end

  23. break指令和MATLAB的迭代和邏輯分岔概念 (續) • Ex: MATLAB: y=1; for x = 1:2:10 % (x=1,3,5,7,9) 只有到9 y=y*x; end y

  24. break指令和MATLAB的迭代和邏輯分岔概念(續) 注意: • 1.我們習慣用i, j, k, m, n 這些字母當作迭代的變數。不過,記得Matlab 認識複數嗎?其實i 原本是sqrt(-1) 的意思。一旦你說了 for i=1:2:100 這句,執行之後,i 的值就是99。因為我們把1:2:100 這個向量的元素一個一個代入i,而最後一個是99。如果要讓i 恢復單位虛數,就說 i = sqrt(-1) 或者 i=complex(0,1)、j 都可以。

  25. break指令和MATLAB的迭代和邏輯分岔概念(續) • 2.sum和prod的應用: 其實如果只是做等差數列相加運算,可以用sum(1:2:10)=1+3+5+7+9 其實如果只是做等差數列相乘運算,可以用prod(1:2:10)=1*3*5*7*9 ps:利用MATLAB處理上述兩個運算,用sum和 prod才是王道

  26. break指令和MATLAB的迭代和邏輯分岔概念(續) • if運算: • 語法1: if (True_or_False), 計算, end • 語法2; if (True_or_False), 計算A, else, 計算B, end • 語法3: if (True_or_False), 計算A, elseif (True_or_False), 計算B, else, 計算C, end

  27. break指令和MATLAB的迭代和邏輯分岔概念(續) • MATLAB: • x = 1/7;if (x+x+x+x==1),disp('Bingo'); else,disp('Hee'); end 結果是Hee • x = 1/7;if (7*x == 1), disp('Bingo'); else, disp('Hee'); end 結果是Bingo • x = 1/3;if (x+x+x == 1), disp('Bingo'); else, disp('Hee'); end 結果是Bingo • x = 1/3;if (3*x == 1), disp('Bingo'); else, disp('Hee'); end 結果是Bingo

  28. break指令和MATLAB的迭代和邏輯分岔概念(續) • while迴圈: 語法:while CONDITION % CONDITION “通常”是一個邏輯計算STATEMENTS; end  流程:1.算CONDITION 2.如果CONDITION的結果是FALSE,則執 行END之後的指令;否則執行STATEMENT 3.執行到END時,回到1.

  29. break指令和MATLAB的迭代和邏輯分岔概念(續) ※for和while的應用有什麼不同? • 既然for迴圈和while迴圈可以互換,那何必提供兩種語法?原因有二: 1.風格問題 有人喜歡for,有人喜歡while 2.for迴圈通常用在事先已經確定要執行幾次的情形,while迴圈通常在一邊計算一邊看看要不要繼續做的情況。

  30. 繪圖-折線圖plot and axis • plot(x,y)的意思就是在平面座標上 從 (x1, y1) 這一點畫一條直線去(x2, y2), 從(x2, y2) 這一點畫一條直線去(x3, y3), ... 從(xn-1, yn-1) 這一點畫一條直線去(xn, yn)。 • 線的顏色: plot(x,y)內建的是黑線,如果要限定顏色 plot(x, y,'r')則是紅線,'g'表示綠色(green) 'b'表示藍色(blue)

  31. 繪圖-plot and axis (續) • 下面是許多色碼、點的圖案、線碼的表格

  32. 區間axis(v) • v = [v1 v2 v3 v4] axis(v),橫軸v1與v2間,縱軸v3與v4間,呈現圖形。 • Ex: 將-pi到pi分成300同等分的點,對應y=sin(x)的值 畫在橫軸-4~4 ,縱軸-2~2 的平面座標系上 • MATLAB: x = linspace(-pi, pi, 301); plot(x, sin(x)); axis([-4,4,-2,2]);

  33. 設定x-y相同的單位長 • 當我們製圖的時候,橫軸與縱軸的單位長未必一樣長,如果要強迫橫軸與縱軸的單位長相同,下指令 axis('equal')。 • MATLAB:(同上題) x = linspace(-pi, pi, 301); plot(x, sin(x),'r'); axis([-4,4,-2,2]); axis('equal')

  34. 設定x-y相同的單位長(續) • Ex: 畫單位圓 • MATLAB: t = linspace(0, 2*pi, 301); plot(cos(t), sin(t)); axis( 2 * [-1 1 -1 1] ); axis('equal')

  35. 繪製函式圖形( fplot( ) ) • 如果想要繪製MATLAB裡內建的函式圖形,或者已存入work的自定的可繪圖函式,可以用上述的方式,取很多很多點,利用折線圖就可以繪製了。 但是其實MATLAB已有內建繪圖的程式,只需要輸入函式和你要的區間就可以了。 • 其語法為 fplot('fun',[xmin xmax ymin ymax]) ※ymin ymax 可加可不加

  36. 繪製函式圖形( fplot( ) ) (續) • EX: >> fplot('sin(x)./x',[-20 20 -0.4 1.2]) %所有的圖形也可以做圖形標示 >> title('fplot of f(x)=sin(x)/x') >> xlabel('x'), ylabel('f(x)') • EX: >>fplot('x^3-3*x^2+x-3',[0,5,130,0])

  37. 繪圖--長條圖 bar and axis • 若v是n維向量,則bar(v)就畫出高度依序為 v1, v2 ... vn的長條圖,橫軸為1、2、…、n。 • 如果V是一個m乘n矩陣,例如: 則橫軸為1、2、3,縱軸為、、…、的高度 、屬於第一行,所以在橫軸1的位置 、屬於第二行,所以在橫軸2的位置 、屬於第三行,所以在橫軸3的位置

  38. 繪圖--長條圖 bar and axis (續) • EX: MATLAB: v=[1 4; 0 -2; 3 5]; bar(v); axis( [ 0.2 6.8 -3 6 ] ) • 當然,也可以自訂橫軸的數字,利用語法bar(x,v) (但是x v維度一定要一樣) 

  39. 繪圖--長條圖 bar and axis (續) • EX: 如果30~39分有1人,40~49分有4人,60~69分有2人,70~79分有3人,80~89分有5人,90~99分有3人,100分有1人 • MATLAB: v=[1 4 0 2 3 5 3 1]; x=[35 45 55 65 75 85 95 100]; bar(x,v); axis( [ 30 105 0 6 ] ) title('輔仁數學期中考成績') xlabel('分數') ylabel('人數')

  40. 自訂函式(function) • 在M-file裡,完成你要的函式。 然後在程式的最上方,加入以下語法: function 變數名稱=函式名稱(變數名稱) • EX: function n = apple(x) 等號的左邊是要output的數據的變數名稱。 等號的右邊是要input的數據的變數名稱, 輸入參數是從呼叫者(caller) 那裡傳過 來的。 ※儲存函式,最好將M-file和函式取同樣的名字,這樣將來比較容易管理。

  41. 自訂函式(function) (續) • EX: 現在要自訂一個能解出一元二次方程式的解的函式: • M-file(檔名:fun.m): MATLAB: function y=fun(a,b,c) y(1)=(-b+sqrt(b^2-4*a*c))/2*a; y(2)=(-b-sqrt(b^2-4*a*c))/2*a;

  42. MATLAB最重要的一節 • 請學習靈活運用help、lookfor 指令。 • EX: help lu lookfor lu ctrl+c (停止搜尋)

More Related