入れ子関数は、MATLAB の別の関数内に作成される関数です。入れ子関数の特別な点は、親関数で定義されている変数を使用および変更できることです。
構文
MATLAB のこれらの入れ子関数は、親関数の変数に簡単にアクセスできます。 MATLAB で入れ子関数を定義するための構文は次のとおりです。
関数 親
ディスプ ( 「親関数」 )
ネストされたFX
関数 ネストされたFX
ディスプ ( 「入れ子関数」 )
終わり
終わり
コード例
以下に、入れ子関数の MATLAB コードを示します。
関数 親関数
x = 10 ;
ネストされた関数1 ( )
% 入れ子関数 1
関数 ネストされた関数1
ディスプ ( 'nestedFunction1 の内部' ) ;
ディスプ ( バツ ) ; % 親関数から変数 x にアクセスする
そして = 二十 ;
ネストされた関数2 ( )
% 入れ子関数 2
関数 ネストされた関数2
ディスプ ( 'nestedFunction2 の内部' ) ;
ディスプ ( バツ ) ; % 親関数および入れ子関数から変数 x にアクセスする 1
ディスプ ( と ) ; % 入れ子関数 1 から変数 y にアクセスする
終わり
終わり
終わり
上で、MATLAB は main 関数名を次のように定義しています。 親関数 で、2 つのネストされた関数が定義されています。 ネストされた関数1 と ネストされた関数2 。
nestedFunction1 は、親関数からの変数 x の値を表示し、別の変数 y を定義します。その後、関数名nestedFunction2を呼び出します。
nestedFunction2 は、親関数とnestedFunction1 の両方からの x の値と、nestedFunction1 からの y の値を表示します。コードを実行すると、出力には両方の入れ子関数からのメッセージと x と y の値が表示されます。
入れ子関数からメイン関数への変数の共有
MATLAB では、変数を定義して、ネストされた関数から main 関数まで変数を共有することもできます。
関数 親ネストされた関数
関数 ネストされた関数
x = 10 ;
終わり
x = x+ 1 ;
ディスプ ( バツ ) ;
終わり
この MATLAB コードは、parent という名前の関数を定義します。この関数には、 という入れ子関数が含まれています。 ネストされた関数 。このコードは、nestedfunc の変数 x に値 10 を代入し、親関数でその値を 1 ずつ増分して、結果を表示します。
同じ親関数の下に複数の関数をネストする
MATLAB では、1 つのメインの親関数内に複数の関数を含めることもできます。
% 同じ親関数の下にある複数の関数関数 親
ネストされた関数1
入れ子関数2
関数 ネストされた関数1
fprintf ( 'linuxhint.com\n' ) ;
終わり
関数 入れ子関数2
fprintf ( 「Linuxhint へようこそ」 ) ;
終わり
終わり
この MATLAB コードは、nestedfunc1 とnestedfunc2 という 2 つの入れ子関数を含む、parent という関数を定義します。親関数が呼び出されると、入れ子になった両方の関数が実行されます。 nestedfunc1 はメッセージ Linuxhint.com を出力し、nestedfunc2 はメッセージ「Welcome To Linuxhint」を出力します。
入れ子になった関数間で変数を共有する
MATLAB では、単一親関数の変数を 2 つの入れ子関数で定義して共有することもできます。
% 同じ親関数の下にある 2 つのネストされた関数関数 親
x = 5
入れ子になった1
入れ子になった2
関数 入れ子になった1
x = x* 2 ;
終わり
関数 入れ子になった2
x = x+ 5 ;
終わり
ディスプ ( バツ )
終わり
この MATLAB コードは、値 5 の変数 x を宣言する、parent という関数を定義します。この関数には、nested1 とnested2 という 2 つの入れ子関数が含まれています。
nested1 では、x の値は 2 倍されますが、x は引数として明示的に渡されないため、外側の x 変数を変更するのではなく、nested1 内に新しいローカル変数 x が作成されます。
nested2 では、x の値が 5 ずつ増加し、nested2 内に新しいローカル変数 x も作成されます。
ネストされた関数の実行後、コードは外側の x 変数の値を表示します。ネストされた関数で行われた変更は、それらの関数内のローカル変数にのみ影響し、外側の変数には影響しないため、値は 5 のままです。
結論
MATLAB の入れ子関数により、コードが整理され、再利用性が向上し、パフォーマンスが向上します。これにより、関数が親関数で定義された変数にアクセスして変更できるようになり、より適切なコードのカプセル化が可能になります。ネストされた関数により、グローバル変数や関数間で複数の引数を渡す必要性が減りました。この記事では、MATLAB の入れ子関数のさまざまな例を取り上げます。