More Related Content Similar to Matlab 在機率與統計的應用
Similar to Matlab 在機率與統計的應用 (20) More from PingLun Liao (20) Matlab 在機率與統計的應用4. MATLAB 外觀
●
四個小視窗,分別說明如下:
– 最左方是顯示目前目錄( current folder )的視窗。
– 最右方的視窗可以顯示工作空間( workspace )內的變數名稱及其 。值
– 中間上方的視窗是 MATLAB 編輯器( editor ),也具備除錯功能。
– 中間下方的視窗是 MATLAB 命令視窗( command window ),可讓使用者輸
入任何 MATLAB 指令。
5. 常用指令
●
檢 版本:查 version 、 ver
●
測試電腦速度: bench
●
說明文件: doc, help
●
列出記憶體中所有變數: who
●
清除記憶空間之資料: clear
●
中止執行: ^c
●
執行範例程式: demo
●
離開 MATLAB : quit 、 exit
6. 變數與基本運算
●
一般數學運算
– 3 + 4
– 3 ^ 3
– ...etc
●
變數
– X = 3 + 4 ^ 4 – 4
●
若不想讓 MATLAB 每次都顯示運算結果,只需在運算式最後加上分號即可。
– X = 3 + 4 ^ 4 – 4;
9. 矩陣的索引或下標
●
矩陣 A 中,位於第 i 橫列、第 j 直行的元素可表示為 A(i, j)
– i 與 j 即是此元素的下標( Subscript )或索引( Index )
●
MATLAB 中,所有矩陣的內部表示法都是以直行為主的一維向量
– A(i, j) 和 A(i+(j-1)*m) 是完全一樣的,其中 m 為矩陣 A 的列數
11. 向量與矩陣的處理
●
MATLAB 中的變數還可用來儲存向量( Vectors )及矩陣( Matrix ),以進
行各種運算,例如:
– s = [1 2 3 4]; t = 2*s+1;
●
取出向量中的一個元素或一部份來做運算,例如:
– t(3) = 2 % 將向量 t 的第三個元素更改為 2
– t(6) = 10 % 在向量 t 加入第六個元素,其 為值 10
– t(4) = [] % 將向量 t 的第四個元素刪除, [] 代表空集合
– t(2:4) – 1
12. 向量與矩陣的處理
●
建立大小為 m×n 的矩陣 ( m 代表矩陣的橫列數, n 代表矩陣的直
行數),但必需在每一橫列結尾加上分號( ; ),例如:
– A = [1 2 3 4; 5 6 7 8; 9 10 11 12];
– zeros(m, n) % 產生維度為 m×n ,構成元素全為 0 的矩陣
– ones(m, n) % 產生維度為 m×n ,構成元素全為 1 的矩陣
– rand(m, n) % 產生均 分 於勻 佈 [0, 1] 的亂數矩陣,其維度為 m×n
– Example: matrice_demo.m
14. if 條件敘述if { 條件敘述1 }
{ 指令敘述1 };
end
if { 條件敘述2 }
{ 指令敘述2 };
elseif{ 條件敘述3 }
{ 指令敘述3 };
else
{ 指令敘述 4};
end
Example: if_demo.m
15. switch 條件式
switch switch_expr
case case_expr,
statement, ..., statement
case {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
otherwise,
statement, ..., statement
end
Example: switch_demo.m
17. Matlab 程式 案檔 (M files)
M files( *.m)
Scripts ( 底稿 )
Functions ( 函式 )
Edit
Open filename.m
Edit filename.m
Execute
Filename (without .m extension)
26. Probability Distributions
● Probability density functions
– Y = exppdf(X, mu)
– Y = normpdf(X, mu, sigma)
● Cumulative density functions
– Y = expcdf(X, mu)
– Y = normcdf(X, mu, sigma)
●
Example: pdis_demo.m
27. 亂數產生器 (Random Number
Generators)
● Probability density functions (pdf)
●
均 分 亂數勻 佈 rand
●
常態分 亂數佈 randn
●
Poisson 亂數 poissrnd
●
常態亂數 (Normal (Gaussian)) normrnd
●
指數亂數 (Exponential) exprnd
●
通用指令 random
●
示範指令: randtool
●
Example: rnd_demo.m
28. 基本的繪圖指令
●
最基本的繪圖指令: plot
●
對 x 座標及相對應的 y 座標進行描點作圖
– 範例: plotxy01.mx = linspace(0, 2*pi); % 在 0 到 2*pi 間,等分取 100 個點
y = sin(x); % 計算 x 的正弦函數值
plot(x, y); % 進行二維平面描點作圖
29. Plot 基本繪圖 -2
●
一次畫出多條曲線
– 將 x 及 y 座標依次送入 plot 指令
– 範例: plotxy02.m
x = linspace(0, 2*pi); % 在 0 到 2*pi 間,等分取 100 個點
plot(x, sin(x), x, cos(x), x, sin(x)+cos(x)); % 進行多條曲線描點作圖
30. Plot 基本繪圖 -3
●
可以使用不同的線標( Marker )來作圖
– 範例: plotxy03.m
x = linspace(0, 2*pi); % 在 0 到 2*pi 間,等分取 100 個點
plot(x, sin(x), 'o', x, cos(x), 'x', x, sin(x)+cos(x), '*');
31. Plot 基本繪圖 -4
●
只給定一個矩陣 y
– 對矩陣 y 的每一個行向量 (Column Vector) 作圖
– 範例: plot04.m
y = peaks; % 產生一個 49×49 的矩陣
plot(y); % 對矩陣 y 的每一個行向量作圖
32. Plot 基本繪圖 -5
●
x 和 y 都是矩陣
●
plot(x, y) 會取用 y 的每一個行向量和對應的 x 行向
量作圖
– 範例: plotxy05.m
x = peaks;
y = x'; % 求矩陣 x 的轉置矩陣 x'
plot(x, y); % 取用矩陣 y 的每一行向量,與對應矩陣 x
% 的每一個行向量作圖
34. 直方圖及 hist 指令
●
直方圖 (Histogram)
– 對大量的資料,顯示資料的分 情況和統計特性佈
– 若資料量 大,直方圖會逼近於這些資料的機率密夠
度函數( PDF, probability density function )
●
hist 指令
– 將資料依大小分成數堆,將每堆的個數畫出
35. 直方圖範例
●
將 10000 個由 randn
產生的正規分 之亂數佈
分成 25 堆
– plotxy20.m
●
Result
% 產生 10000 個正規分 亂數佈
x = randn(10000, 1);
% 繪出直方圖,分成 25 堆
hist(x, 25);
37. 除錯技巧 Debugger
MATLAB 的除錯器 (Debugger) 功能包含:
查詢每一個函數的工作空間( Workspace )
顯示函數呼叫過程中的的堆疊( Function Call
Stack )
一列一列地執行 M 檔案( Step-by-step
Execution )
一般程式語言的錯誤分類
語法錯誤
邏輯錯誤
39. 一般除錯技巧 (2/2)
使用判斷式及 fprintf 指令印出變數的值。
在除錯一個單獨函數時,可在其第一列的函數宣告列
加上 % ,並定義輸入引數的值,此時我們就可以直接
以腳本( Scripts )的方式來執行此 M 檔案,並保留
所有變數於 MATLAB 工作空間之中。
使用 MATLAB 的除錯器。
41. 除錯指令與圖示
圖 示 MATLAB 對應指令 說 明
dbstop/dbclear 設立或移除中斷點
dbclear all 移除所有中斷點
dbstep 執行下一列程式碼
dbstep in 進入某函數程式碼
dbstep out 退出某函數程式碼
dbcont
繼續執行程式碼
dbquit 跳出除錯模式
46. 不同版本的 MATLAB 圖示對應關係
第六 / 七版
圖示
第五版
圖示
MATLAB
對應指令
說 明
dbstop/dbclear
設立或移除中斷點
dbclear all
移除所有中斷點
dbstep
執行下一列程式碼
dbstep in
進入某函數程式碼
無
dbstep out
退出某函數程式碼
dbcont
繼續執行程式碼
dbquit
跳出除錯模式
無
dbtype
列出程式碼
47. Who am I
2006~2010 國科會計畫研究助理
2007/9~2011/10 校內助教
2011/12~2014/10 環隆科技股份有限公司 軟體二級工程師 ( 研發役 )
Blog:http://kusogameprogramming.blogspot.tw/
FaceBook:https://www.facebook.com/LiaoPingLun
Google+:https://plus.google.com/+PingLunLiao
Youtube:https://www.youtube.com/channel/UClnsiixSemOSeq2Nu-82RFQ
Email: pinglunliao at gmail dot com
LINE ID: Holan.Liao