Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

オブジェクトのインデックスとしての end

オブジェクトの end インデックスの定義

A(4:end) のように、オブジェクトのインデックス式で end を使用すると、関数 end は、その次元の最後の要素に相当するインデックスの値を返します。

クラスでは関数 end をオーバーロードして特化した動作を実装することができます。クラスが end メソッドを定義する場合、MATLAB® は、式の解釈方法を判定するためにそのメソッドを呼び出します。

end メソッドには次の呼び出し構文があります。

ind = end(A,k,n)

引数は以下のとおりです。

  • A はオブジェクト

  • k は、end 構文を使用した式内のインデックス

  • n は、式内のインデックス総数

  • ind は、式内で使用されるインデックス値

たとえば、3 行 5 列の配列 A について考えてみます。MATLAB が次の式を読み取ります。

A(end-1,:)

MATLAB は、オブジェクト A に定義された end メソッドを引数を使用して呼び出します。

ind = end(A,1,2)

これらの引数は、インデックスが 2 つあり、最初のインデックスで end ステートメントが発生することを意味します。end クラスのメソッドは、最初の次元の最後の要素に対してインデックス値を返します (この場合は、1 が引かれます)。元の式は以下のように評価されます。

A(3-1,:)

クラスが end メソッドを実装する場合は、メソッドがそのクラスに対して適切な値を返すようにする必要があります。

end メソッド

MyDataClass の例 (変更されたインデックスをもつクラスを参照) での end メソッドは、Data プロパティの内容に対して作用します。このメソッドの目的は、以下のようなインデックス式において end を置き換えることができる値を返すことです。

obj(4:end)
obj.Data(2,3:end)

この end メソッドは、end の正の整数値を決定します。メソッドは値を返し、MATLAB がインデックス式で使用できるようにします。

function ind = end(obj,k,n)
   szd = size(obj.Data);
   if k < n
      ind = szd(k);
   else
      ind = prod(szd(k:end));
   end
end

関連するトピック