Main Content

MATLAB でのオブジェクトの操作

一部の MATLAB® 関数は "オブジェクト" を返します。オブジェクトは、データ ("プロパティ") を関数およびメソッドと結合します。オブジェクト プロパティには、データ (数値やテキストなどの単純なタイプを含む) やその他のオブジェクトが含まれています。関数とメソッドは、オブジェクト自体に対してアクションを実行します。これらの関数は、たとえば、オブジェクト プロパティに対してアクションを実行したり、オブジェクトの状態を変更したりできます。

オブジェクトの作成

オブジェクトを作成するときに、そのオブジェクトに変数を割り当てることができます。変数により、オブジェクトのプロパティやメソッドにアクセスできます。たとえば、関数histogramの次の構文では、x のデータのヒストグラムが表示されるだけでなく、オブジェクトが出力 h として返されます。

h = histogram(x)

1,000 個の乱数を表示する histogram オブジェクトを作成します。出力引数を指定して histogram を呼び出すと、グラフ、そのオブジェクトの型またはクラス (Histogram)、およびオブジェクトのプロパティとその値の部分リストが表示されます。

x = randn(1000,1);
h = histogram(x)

h = 
  Histogram with properties:

             Data: [1000x1 double]
           Values: [3 1 2 15 17 27 53 79 85 101 127 110 124 95 67 32 27 16 6 6 4 1 2]
          NumBins: 23
         BinEdges: [-3.3000 -3.0000 -2.7000 -2.4000 -2.1000 -1.8000 -1.5000 -1.2000 -0.9000 -0.6000 -0.3000 0 0.3000 0.6000 0.9000 1.2000 1.5000 1.8000 2.1000 2.4000 2.7000 3 3.3000 3.6000]
         BinWidth: 0.3000
        BinLimits: [-3.3000 3.6000]
    Normalization: 'count'
        FaceColor: 'auto'
        EdgeColor: [0 0 0]

  Use GET to show all properties

ワークスペースでは、histogram オブジェクトが、オブジェクトの次元や型などの他のアクティブな変数とともにリストされます。

object_in_Workspace.jpg

オブジェクト プロパティの取得と設定

オブジェクト プロパティにはデータが含まれています。プロパティ値を変更することで、オブジェクトの特定の特性を変更できます。オブジェクトに割り当てられた変数と共にドット表記を使用すると、そのプロパティにアクセスしたり、それを変更したりできます。

histogram オブジェクトの場合、プロパティには生データ、ビンの数、各バーの高さ、およびヒストグラムの外観を制御するその他の情報が含まれています。たとえば、Orientation は、バーの表示方向を水平または垂直のどちらにするかを決定する、histogram オブジェクトのプロパティです。オブジェクトの名前 (h)、ドット、およびプロパティ名を入力して、プロパティの値にアクセスできます。

h.Orientation
ans = 
'vertical'

同じ構文を使用してプロパティの値を変更できますが、等号記号と新しい値を追加する必要があります。

h.Orientation = "horizontal"

h = 
  Histogram with properties:

             Data: [1000x1 double]
           Values: [3 1 2 15 17 27 53 79 85 101 127 110 124 95 67 32 27 16 6 6 4 1 2]
          NumBins: 23
         BinEdges: [-3.3000 -3.0000 -2.7000 -2.4000 -2.1000 -1.8000 -1.5000 -1.2000 -0.9000 -0.6000 -0.3000 0 0.3000 0.6000 0.9000 1.2000 1.5000 1.8000 2.1000 2.4000 2.7000 3 3.3000 3.6000]
         BinWidth: 0.3000
        BinLimits: [-3.3000 3.6000]
    Normalization: 'count'
        FaceColor: 'auto'
        EdgeColor: [0 0 0]

  Use GET to show all properties

すべてのオブジェクト プロパティが書き込み可能なわけではありません。プロパティが読み取り専用の場合、読み取ることはできても、新しい値をプロパティに代入しようとするとエラーが返されます。たとえば、ヒストグラムの Values プロパティには各バーの高さが格納され、オブジェクトの作成時にその高さが計算されます。これは読み取り専用プロパティであるため、Values を直接変更することはできません。

オブジェクトを受け入れる関数

一部の関数は、オブジェクトに対してアクションを実行することを目的としています。これらの関数は、オブジェクトの 1 つのクラスのみに対して定義される "メソッド" か、そのオブジェクトを通常の入力引数として受け入れる関数にすることができます。いずれの場合も、オブジェクトの変数を入力として使用できます。たとえば、Histogram オブジェクトに、ヒストグラムのビンの数を増やす関数 morebins と、減らす関数 fewerbins が含まれているとします。現在、ヒストグラム内にあるビンの数を確認するには、NumBins プロパティにアクセスします。

h.NumBins
ans = 23

morebins を呼び出して、ヒストグラム h のビンの数を増やします。関数 morebins は、ビンの数をおよそ 10% ずつ増やすので、ビンの数は 23 から 26 に増えます。

morebins(h)

ans = 26

他のオブジェクト指向のプログラミング言語では、頻繁にドット表記を使用して、h.morebins のようにメソッドを呼び出します。その構文は、MATLAB のメソッドでもサポートされます。ただし、サンプル コード内で整合性を取るために、このドキュメンテーションでは、ほとんどのメソッドおよびオブジェクト入力を受け入れる関数に関数形式を使用しています。

関数 morebins には入力引数が追加されていませんが、このことは、オブジェクトを受け入れるすべての関数に当てはまるわけではありません。オブジェクト自体に加え、オブジェクト関数は追加の入力引数をもつことができ、それらの引数は、標準の関数構文を使用して関数に渡すことができます。たとえば、次の構文では、2 つの入力引数を取るオブジェクト関数を呼び出すことができます。

functionName(objectVariable,arg1,arg2)

ユーザー独自のクラスベース オブジェクトの定義

オブジェクト指向のプログラミング手法を使用すれば、MATLAB 言語で提供されるオブジェクトに加えて、独自のクラスベース オブジェクトを作成できます。MATLAB 言語は標準の OO 規則に従います。詳細については、最初に単純なクラスの作成を参照してください。

参考

|