主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

函数

関数名,入力および出力の宣言

説明

函数(y1,……yN) = myfun (x1,…,xM)は,入力x1,…,xMを受け入れ,出的力…,yN日元を返すmyfunという関数を宣言します。この宣言ステートメントは,関数の最初の実行可能行でなければなりません。有効な関数名は,アルファベットで始まり,文字,数字またはアンダースコアを含むことができます。

関数は以下に保存できます。

  • 関数定義のみを含む関数ファイル。ファイルの名前は,ファイル内の最初の関数の名前に一致させる必要があります。

  • コマンドと関数定義を含むスクリプトファイル。関数は,ファイルの末尾になければなりません。スクリプトファイルに,ファイル内の関数と同じ名前を付けることはできません。R2016b以降では,関数はスクリプト内でサポートされます。

ファイルには複数のローカル関数または入れ子関数を含めることができます。可読性を向上させるには,结束キーワードを使用して,ファイル内の各関数の終端を示します。结束キーワードは,以下の場合に必須です。

  • ファイル内のいずれかの関数が入れ子関数を含んでいる。

  • 関数が関数ファイル内のローカル関数であり,ファイル内のローカル関数のいずれかが结束キーワードを使用している。

  • 関数がスクリプトファイル内のローカル関数である。

すべて折りたたむ

average.mというファイル内に,入力ベクトルを受け入れ,値の平均を計算し,単一の結果を返す関数を定義します。

函数Ave = average(x) Ave = sum(x(:) /numel(x));结束

コマンドラインから関数を呼び出します。

z = 1:9 9;ave =平均(z)
ave = 50

stat.mというファイル内に入力ベクトルの平均と標準偏差を返す関数を定義します。

函数[m,s] = stat(x) n = length(x);m = (x) / n;s =√总和(x m)。^ 2 / n));结束

コマンドラインから関数を呼び出します。

数值= [12.7,45.4,98.9,26.6,53.1];(ave,方差)=统计(值)
Ave = 47.3400 stdev = 29.4124

2 \π/ 3美元において被積分関数の値を計算し,0から\π美元まで曲線の下の面積を計算するスクリプトを,integrationScript.mという名前のファイル内に定義します。被積分関数$ y = \ sin (x) ^ 3美元を定義するローカル関数を含めます。

メモ:スクリプトに関数を含めるには,MATLAB®R2016b以降が必要です。

计算被积函数在2* /3处的值。x = 2 *π/ 3;y = myIntegrand (x)计算曲线下从0到的面积。xmin = 0;xmax =π;f = @myIntegrand;=积分(f xmin xmax)函数y = myIntegrand(x) y = sin(x).^3;结束
Y = 0.6495 a = 1.3333

stat2.mというファイル内に2つの関数を定義します。最初の関数が2番目の関数を呼び出します。

函数[m,s] = stat2(x) n = length(x);m = avg (x, n);s =√总和(x m)。^ 2 / n));结束函数M = avg(x,n) M = sum(x)/n;结束

関数avg“ローカル関数”です。ローカル関数は,同じファイル内の他の関数だけが使用できます。

コマンドラインから関数stat2を呼び出します。

数值= [12.7,45.4,98.9,26.6,53.1];(ave,方差)= stat2(值)
Ave = 47.3400 stdev = 29.4124

入力を,要素または要素のいずれも含まない数値ベクトルに制限する関数を定義します。この関数では,MATLAB®バージョンR2019b以降で有効な参数キーワードを使用します。

函数[m s] = stat3 (x)参数x(: 1) {mustBeNumeric, mustBeFinite}结束n =长度(x);m = avg (x, n);s =√总和(x m)。^ 2 / n));结束函数M = avg(x,n) M = sum(x)/n;结束

参数コードブロック内の(: 1)は,xがベクトルでなければならないことを示します。検証関数{mustBeNumeric, mustBeFinite}は,xの要素をまたはのいずれでもない数値に制限します。詳細については,関数の引数の検証を参照してください。

である要素を含むベクトルを指定して関数を呼び出すと,入力引数の宣言に違反します。この違反の結果,検証関数mustBeFiniteによりエラーがスローされます。

值= [12.7,45.4,98.9,NaN, 53.1];(ave,方差)= stat3(值)
位置1处的输入参数无效。价值必须是有限的。
R2006aより前に導入