主要内容

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

関数のタイプ

ファイルのローカル関数と入れ子関数

プログラムファイルには複数の関数を含めることができます。ローカル関数と入れ子関数は、プログラムを小さいタスクに分割するときに便利です。これにより、コードが読み取りやすく、維持しやすくなります。

“ローカル関数”は,同じファイル内で利用できるサブルーチンです。ローカル関数を使用することが、プログラム タスクを分割する最も一般的な方法です。関数ファイルの場合は関数定義のみが含まれ、ローカル関数は、ファイル内のメイン関数の後に任意の順序で配置できます。スクリプト ファイルの場合はコマンドと関数定義が含まれ、ローカル関数はファイルの末尾に配置しなければなりません (スクリプト内の関数は、R2016b 以降でサポートされます)。

たとえば,メイン関数myfunctionと2つのローカル関数squareMedoubleMeをもつ,myfunction.mという関数ファイルを作成します。

函数b = myfunction(a) b = squareMe(a)+doubleMe(a);结束函数y = x.^2;结束函数y = x.*2;结束

メイン関数はコマンドラインまたは別のプログラムファイルから呼び出せますが,ローカル関数はmyfunctionのみで使用できます。

myfunction(π)
ans = 16.1528

“入れ子関数”は,完全に別の関数内に含まれている関数です。入れ子関数とローカル関数の主な違いは、入れ子関数は親関数で定義された変数を、引数として明示的に受け渡すことなく使用できるということです。

入れ子関数は,コンポーネント間でデータを受け渡すアプリケーションなど,サブルーチンでデータを共有するときに便利です。たとえば,スライダーまたは編集可能なテキストボックスを使って0と1の間の値を設定できる関数を作成します。コールバックに入れ子関数を使用すると,スライダーとテキストボックスは値とそれぞれのハンドルを明示的に受け渡しせずに共有できます。

函数Myslider值= 0;f =图;s = uicontrol (f,“风格”“滑块”“回调”, @slider);e = uicontrol (f,“风格”“编辑”“回调”@edittext,...“位置”, 100年,20100年,20);函数slider(obj,~) value = obj. value;e.String = num2str(价值);结束函数edittext(obj,~) value = str2double(obj. string);s.Value =价值;结束结束

サブフォルダーのプライベート関数

ローカル関数や入れ子関数と同様に,プライベート関数は特定の場所にある関数のみがアクセスできます。ただし,プライベート関数は,プライベート関数を呼び出せる関数と同じファイル内にはありません。私人というサブフォルダー内にあります。プライベート関数は,私人フォルダーのすぐ上のレベルのフォルダーにある関数のみが使用できます。プライベート関数を使用してコードを別のファイルに分割したり、複数の関連する関数間でコードを共有したりできます。

ファイルなしの無名関数

関数が1つのステートメントから構成されていれば,無名関数を使用して,プログラムファイルを作成せずに関数を定義できます。無名関数の一般的な用途は,まず数式を定義し,MATLAB®の”関数を引数とする関数”,つまり入力に関数ハンドルを受け入れる関数を使用して数式を値の範囲に対して評価することです。

たとえば,以下のステートメントは無名関数に年代という関数ハンドルを作成します。

S = @(x) sin(1) /x;

この関数は1つの入力xをもっています。演算子が関数ハンドルを作成します。

次のように関数ハンドルを使用し,特定の値に対して関数を評価できます。

y = s(π)
y = 0.3130

また,関数ハンドルをfplotのような値の範囲で評価する関数に渡すことができます。

范围= [0.01,0.1];fplot (s、范围)

图中包含一个坐标轴。坐标轴包含一个functionline类型的对象。

関連するトピック