主要内容

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

プロパティなしの組み込み型のサブクラス

特殊な数値型

組み込み数値型をサブクラス化して,組み込み型の機能を継承するカスタマイズされたデータ型を作成します。クラスメソッドを実装することによって,ス,パ,クラスによって提供された機能に機能を追加します。プロパティなしのサブクラスは,数値デ,タをス,パ,クラスの型で格納します。サブクラスの設計により,その他のデータを格納するためのプロパティが必要ない場合,インデックス付けおよび連結メソッドを定義する必要がないため,実装はより単純になります。

詳細にいては,Matlab組み込み型のサブクラスを参照してください。

Uint8デ,タを管理するクラス

この例では,組み込みのuint8クラスから派生したクラスを示します。このクラスは,uint8値で定義されている強度メジのデタの集合を維持するプロセスを簡素化します。クラスの基本的な操作には,次のようなものがあります。

  • オブジェクトデタストレジを減らすために,さまざまなクラスのメジデタをuint8に変換する機能。

  • サブクラスオブジェクトに含まれる強度▪▪メ▪▪ジを表示するメソッド

  • uint8デ,タでサポ,トされるすべてのメソッドを使用する機能(たとえば,大小,ンデックス付け,重塑bitshiftfft,算術演算子など)。

クラスのデータは,サブクラスオブジェクトのスーパークラスの部分に格納されている強度イメージデータの行列になります。この方法では,プロパティは必要ありません。

次のように,DocUint8クラスでメジのデタを格納し,必要に応じてデタを変換します。

classdefDocUint8 < uint8方法函数obj = docint8 (data)如果Nargin == 0 data = uint8(0);结束Obj = obj@uint8(数据);在超类上存储数据结束函数h = showImage(obj) data = uint8(obj);图;Colormap (gray(256)) h = imagesc(data,[0 255]);轴图像亮(2)结束结束结束

DocUint8クラスの使用

DocUint8オブジェクトの作成

DocUint8クラスは,DocUint8オブジェクトとして保存されたすべての▪▪メ▪▪ジを一貫した方法で表示するメソッドを提供します。たとえば,次のようになります。

Cir = imread(“circuit.tif”);img1 = DocUint8(cir);img1.showImage;

DocUint8は,uint8のサブクラスなので,任意のuint8メソッドを使用できます。たとえば,

大小(img1)
Ans = 280 272

ンデックス付けの操作

継承されたメソッドは,インデックス付けの操作を実行しますが,同じクラスのオブジェクトをサブクラスとして返します。

したがって,次のようにして,イメージのデータにインデックスを付け,サブクラスのメソッドを呼び出せます。

showImage (img1 (100:200 1:160));

添字による参照の操作(継承されたsubsrefメソッドにより制御される)は,DocUint8オブジェクトを返します。

ンデックス付けされた要素に値を割り当てることができます。

Img1 (100:120,140:160) = 255;img1.showImage;

添字による割り当ての操作(継承されたsubsasgnメソッドにより制御される)は,DocUint8オブジェクトを返します。

連結操作

DocUint8クラスは,DocUint8オブジェクトを返し,uint8horzcatvertcatメソッドを継承するので,連結操作はDocUint8オブジェクトに機能します。

showImage ([img1 img1]);

デ,タ操作

算術演算子のように,データ値に操作するメソッドは,サブクラスタイプではなく組み込みタイプのオブジェクトを返します。たとえば,DocUint8オブジェクトを乗算するとuint8オブジェクトが返されるため,showImageを呼び出すとエラ,がスロ,されます。

A = img1.*1.8;showImage(一个);
检查调用函数'showImage'时是否缺少参数或参数数据类型不正确。

このような演算を実行するには,サブクラスメソッドを実装して,継承されたメソッドをオーバーライドします。メソッドは,(要素ごとの)配列乗算を実装します。

このメソッドをDocUint8クラスに追加します。

函数O = times(obj,val) u8 = uint8(obj).*val;o = DocUint8(u8);结束

uint8のメソッドをオバラドすると,matlab®は基底クラスのメソッドではなくサブクラスのメソッドを呼び出します。サブクラスメソッドは以下を行わなければなりません。

  • DocUint8オブジェクトデ,タに対しuint8メソッドを呼び出す。

  • uint8デ,タを使用して新しいDocUint8オブジェクトを構成する。

DocUint8クラスにメソッドを追加した後,乗算式の出力はDocUint8クラスのオブジェクトになります。

showImage (img1。* 1.8);

関連するトピック