• 沒有找到結果。

選擇性引數

MATLAB 的變數傳遞方式: 按值傳遞

Lecture 5 選擇性引數

Lecture 5

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

許多 MATLAB 函式支援選擇性的輸入引數及輸出引數,例 如: plot、max 等函式。

x_max = max(x);

[x_max,ii_max] = max(x);

MATLAB 有關選擇性引數資訊的函式

nargin: 傳回用來呼叫函式的實際輸入引數數目,是 number of argument input 的縮寫。

nargout: 傳回用來呼叫函式的實際輸出引數數目,是 number of argument output 的縮寫。

nargchk: 假如用來呼叫函式的引數太少或是太多,將傳回 一個錯誤訊息。

error: 顯示錯誤的訊息,並放棄執行產生錯誤的函式。用 在當引數產生的錯誤是嚴重的 (fatal) 情況。

warning: 顯示警告的訊息,並繼續執行函式。用在當引數 的錯誤並不嚴重,而函式可以繼續執行的情況。

inputname: 傳回對應輸入引數清單特定次序的實際變數名 稱。

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 30/53

許多 MATLAB 函式支援選擇性的輸入引數及輸出引數,例 如: plot、max 等函式。

x_max = max(x);

[x_max,ii_max] = max(x);

MATLAB 有關選擇性引數資訊的函式

nargin: 傳回用來呼叫函式的實際輸入引數數目,是 number of argument input 的縮寫。

nargout: 傳回用來呼叫函式的實際輸出引數數目,是 number of argument output 的縮寫。

nargchk: 假如用來呼叫函式的引數太少或是太多,將傳回 一個錯誤訊息。

error: 顯示錯誤的訊息,並放棄執行產生錯誤的函式。用 在當引數產生的錯誤是嚴重的 (fatal) 情況。

warning: 顯示警告的訊息,並繼續執行函式。用在當引數 的錯誤並不嚴重,而函式可以繼續執行的情況。

inputname: 傳回對應輸入引數清單特定次序的實際變數名 稱。

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

許多 MATLAB 函式支援選擇性的輸入引數及輸出引數,例 如: plot、max 等函式。

x_max = max(x);

[x_max,ii_max] = max(x);

MATLAB 有關選擇性引數資訊的函式

nargin: 傳回用來呼叫函式的實際輸入引數數目,是 number of argument input 的縮寫。

nargout: 傳回用來呼叫函式的實際輸出引數數目,是 number of argument output 的縮寫。

nargchk: 假如用來呼叫函式的引數太少或是太多,將傳回 一個錯誤訊息。

error: 顯示錯誤的訊息,並放棄執行產生錯誤的函式。用 在當引數產生的錯誤是嚴重的 (fatal) 情況。

warning: 顯示警告的訊息,並繼續執行函式。用在當引數 的錯誤並不嚴重,而函式可以繼續執行的情況。

inputname: 傳回對應輸入引數清單特定次序的實際變數名 稱。

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 30/53

許多 MATLAB 函式支援選擇性的輸入引數及輸出引數,例 如: plot、max 等函式。

x_max = max(x);

[x_max,ii_max] = max(x);

MATLAB 有關選擇性引數資訊的函式

nargin: 傳回用來呼叫函式的實際輸入引數數目,是 number of argument input 的縮寫。

nargout: 傳回用來呼叫函式的實際輸出引數數目,是 number of argument output 的縮寫。

nargchk: 假如用來呼叫函式的引數太少或是太多,將傳回 一個錯誤訊息。

error: 顯示錯誤的訊息,並放棄執行產生錯誤的函式。用 在當引數產生的錯誤是嚴重的 (fatal) 情況。

warning: 顯示警告的訊息,並繼續執行函式。用在當引數 的錯誤並不嚴重,而函式可以繼續執行的情況。

inputname: 傳回對應輸入引數清單特定次序的實際變數名 稱。

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

許多 MATLAB 函式支援選擇性的輸入引數及輸出引數,例 如: plot、max 等函式。

x_max = max(x);

[x_max,ii_max] = max(x);

MATLAB 有關選擇性引數資訊的函式

nargin: 傳回用來呼叫函式的實際輸入引數數目,是 number of argument input 的縮寫。

nargout: 傳回用來呼叫函式的實際輸出引數數目,是 number of argument output 的縮寫。

nargchk: 假如用來呼叫函式的引數太少或是太多,將傳回 一個錯誤訊息。

error: 顯示錯誤的訊息,並放棄執行產生錯誤的函式。用 在當引數產生的錯誤是嚴重的 (fatal) 情況。

warning: 顯示警告的訊息,並繼續執行函式。用在當引數 的錯誤並不嚴重,而函式可以繼續執行的情況。

inputname: 傳回對應輸入引數清單特定次序的實際變數名 稱。

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 30/53

許多 MATLAB 函式支援選擇性的輸入引數及輸出引數,例 如: plot、max 等函式。

x_max = max(x);

[x_max,ii_max] = max(x);

MATLAB 有關選擇性引數資訊的函式

nargin: 傳回用來呼叫函式的實際輸入引數數目,是 number of argument input 的縮寫。

nargout: 傳回用來呼叫函式的實際輸出引數數目,是 number of argument output 的縮寫。

nargchk: 假如用來呼叫函式的引數太少或是太多,將傳回 一個錯誤訊息。

error: 顯示錯誤的訊息,並放棄執行產生錯誤的函式。用 在當引數產生的錯誤是嚴重的 (fatal) 情況。

warning: 顯示警告的訊息,並繼續執行函式。用在當引數 的錯誤並不嚴重,而函式可以繼續執行的情況。

inputname: 傳回對應輸入引數清單特定次序的實際變數名 稱。

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

許多 MATLAB 函式支援選擇性的輸入引數及輸出引數,例 如: plot、max 等函式。

x_max = max(x);

[x_max,ii_max] = max(x);

MATLAB 有關選擇性引數資訊的函式

nargin: 傳回用來呼叫函式的實際輸入引數數目,是 number of argument input 的縮寫。

nargout: 傳回用來呼叫函式的實際輸出引數數目,是 number of argument output 的縮寫。

nargchk: 假如用來呼叫函式的引數太少或是太多,將傳回 一個錯誤訊息。

error: 顯示錯誤的訊息,並放棄執行產生錯誤的函式。用 在當引數產生的錯誤是嚴重的 (fatal) 情況。

warning: 顯示警告的訊息,並繼續執行函式。用在當引數 的錯誤並不嚴重,而函式可以繼續執行的情況。

inputname: 傳回對應輸入引數清單特定次序的實際變數名 稱。

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 30/53

上述函式的語法 (1/2)

nargchk 語法

msg = nargchk(min_args,max_args,num_args);

min_args: 引數最小數目,max_args: 引數最大數目,

num_args: 實際引數數目。

假使引數的數目不在可接受的範圍,將會產生一個標準的錯 誤訊息。

假使引數的數目在可接受範圍內,則函式將會傳回一個空字 串。

error 語法

error('msg'),其中 msg 是包含錯誤訊息的字串。 error 可與 nargchk 互相搭配使用。

當程式發生錯誤時,產生一個錯誤訊息並停止執行。 如果程式沒有錯誤,就只輸出一個空字串。

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

上述函式的語法 (1/2)

nargchk 語法

msg = nargchk(min_args,max_args,num_args);

min_args: 引數最小數目,max_args: 引數最大數目,

num_args: 實際引數數目。

假使引數的數目不在可接受的範圍,將會產生一個標準的錯 誤訊息。

假使引數的數目在可接受範圍內,則函式將會傳回一個空字 串。

error 語法

error('msg'),其中 msg 是包含錯誤訊息的字串。

error 可與 nargchk 互相搭配使用。

當程式發生錯誤時,產生一個錯誤訊息並停止執行。

如果程式沒有錯誤,就只輸出一個空字串。

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 31/53

上述函式的語法 (2/2)

warning 語法

warning('msg'),其中 msg 是包含警告訊息的字串。

會告知使用者發生問題的函式名稱,以及程式發生問題的位 置,但程式仍繼續執行而不會中斷。

inputname 語法

name = inputname(argno);

會傳回所使用的真實引數名稱,其中 argno 是引數的序數。 如果引數是個變數,函式會傳回變數名稱。

假如引數是一段敘述,則會傳回一個空字串。

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

上述函式的語法 (2/2)

warning 語法

warning('msg'),其中 msg 是包含警告訊息的字串。

會告知使用者發生問題的函式名稱,以及程式發生問題的位 置,但程式仍繼續執行而不會中斷。

inputname 語法

name = inputname(argno);

會傳回所使用的真實引數名稱,其中 argno 是引數的序數。

如果引數是個變數,函式會傳回變數名稱。

假如引數是一段敘述,則會傳回一個空字串。

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 32/53

範例: 使用選擇性引數

產生一個函式 pplar_value,將直角座標 (x, y) 轉換成等 價的極座標 (r, θ)。

如果只有輸入一個引數,則函式將會假設 y 值為 0,並繼 續完成轉換的計算。

正常的情況下,函式將傳回距離 r 與角度 θ(以度為單位) 兩個數值,但如果呼叫此函式的敘述式只有一個輸出引數,

它將只會傳回距離值 r。

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

MATLAB 程式碼 (檔名: polar_value.m)

function

[mag,angle] = polar_value(x,y) msg = nargchk(1,2,nargin);

error(msg);

if

nargin < 2 y = 0;

end

if

x == 0 & y == 0

msg = 'x and y are zero: angle is meaningless!';

warning(msg);

end

mag = sqrt(x.^2 + y.^2);

if

nargout == 2

angle = atan2(y,x) * 180/pi;

end

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 34/53

程式執行結果 (1/2)

>> [r, theta] = polar_value(1, -1) r =

1.4142 theta =

-45

>> r = polar_value(1, -1) r =

1.4142

>> [r, theta] = polar_value(-2) r =

2 theta =

180

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

程式執行結果 (1/2)

>> [r, theta] = polar_value(1, -1) r =

1.4142 theta =

-45

>> r = polar_value(1, -1) r =

1.4142

>> [r, theta] = polar_value(-2) r =

2 theta =

180

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 35/53

程式執行結果 (1/2)

>> [r, theta] = polar_value(1, -1) r =

1.4142 theta =

-45

>> r = polar_value(1, -1) r =

1.4142

>> [r, theta] = polar_value(-2) r =

2 theta =

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

程式執行結果 (2/2)

>> [r, theta] = polar_value(3, 4) r =

5 theta =

53.1301

>> [r, theta] = polar_value(0, 0)

Warning: x and y are zero: angle is meaningless!

> In polar_value at 32

r =

0 theta =

0

Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 6, Computer Programming 36/53

程式執行結果 (2/2)

>> [r, theta] = polar_value(3, 4) r =

5 theta =

53.1301

>> [r, theta] = polar_value(0, 0)

Warning: x and y are zero: angle is meaningless!

> In polar_value at 32

r =

0 theta =

0

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . .

. .

. . . . .

Lecture 6

相關文件