主要内容

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

関数呼び出しの結果へのインデックス付け

このトピックでは,関数呼び出しによって作成された一時変数にドットインデックスを付ける方法を説明します。"一時変数"は,関数呼び出しの結果が,大きな式で中間変数として使用される場合に作成されます。式内の関数呼び出しの結果が一時的であるのは,そこで作成される変数が短期間のみ存在し,実行後はMATLAB®ワークスペースに保存されないためです。例としては式.prop myFunction (x)があります。これは,引数xを指定してmyFunctionを呼び出した後,結果の道具プロパティを返します。任意のタイプの関数(無名関数,ローカル関数,入れ子関数,またはプライベート関数)をこの方法で呼び出すことができます。

以下の関数を想定します。

函数y = struct(struct(x))“战场”, x);结束

この関数は,在战场上という名前のフィールドを1つもつ構造体を作成し,そのフィールドに値を代入します。次のコマンドを使ってこの関数を呼び出し,値1を含むフィールドをもつ構造体を作成できます。

myStruct (1)
ans = struct with fields: Afield: 1

しかし,フィールド値を直接返す場合は,次のコマンドを使って関数呼び出しの結果にインデックスを付けることができます。

myStruct(1)。在战场上
ans = 1

このコマンドの実行後,コマンドmyStruct (1)によって作成された一時構造体は存在しなくなり,MATLABはフィールド値のみを返します。概念的にこの使用法は,構造体を作成し,インデックスを付け,その後削除することと同じです。

S =结构(“战场”1);S.Afield清晰年代

サポートされる構文

MATLABは,.prop foo (arg)のような,関数呼び出しの結果に対するドットインデックスをサポートしています。関数呼び出しの結果に対する他の形式のインデックス付け(小かっこを使用したfoo (arg) (2)や,中かっこを使用したfoo (arg) {2}など)はサポートされていません。コマンドが成功するには,以下の条件を満たしていなければなりません。

  • foo (__arg1、最长,…)のように,小かっこを使用して関数が呼び出されている。

  • 関数は,ドットインデックスが定義されている変数(構造体,桌子,オブジェクトなど)を返す。

  • ドットインデックスの添字が有効である。

MATLABは,ドットインデックスの定義されていない変数が関数から返される場合でも,常に一時変数にドットインデックス演算を適用しようとします。たとえば,魔法(3)で作成された行列にインデックスを付けようとすると,エラーが返されます。

(3) .field
这种类型的变量不支持点索引。金宝app

一時変数に対するインデックス付けが引き続き可能であるなら,インデックス付けのコマンドを式の最後にさらに追加することができます。たとえば,次の式を考えます。

2)表(兰特(10日).Var1 (3:)
この式では、表にインデックスを付けてそれに含まれる行列を取得し,次にその行列にインデックスを付けて3行目を取得します。

  • 2)表(兰特(10日)は,Var1という名前の変数を1つもつ表を作成する。変数には10行2列の行列が含まれます。

  • 2)表(兰德(10)。Var1Var1に含まれる10行2列の行列を返す。

  • 2)表(兰特(10日).Var1 (3:)Var1に含まれる行列の3行目を返す。

参考

|

関連するトピック