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 == 0msg = 'x and y are zero: angle is meaningless!';
warning(msg);
end
mag = sqrt(x.^2 + y.^2);
if
nargout == 2angle = 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
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .