このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
プロパティなしの組み込み型のサブクラス
特殊な数値型
組み込み数値型をサブクラス化して,組み込み型の機能を継承するカスタマイズされたデータ型を作成します。クラスメソッドを実装することによって,ス,パ,クラスによって提供された機能に機能を追加します。プロパティなしのサブクラスは,数値デ,タをス,パ,クラスの型で格納します。サブクラスの設計により,その他のデータを格納するためのプロパティが必要ない場合,インデックス付けおよび連結メソッドを定義する必要がないため,実装はより単純になります。
詳細にいては,Matlab組み込み型のサブクラスを参照してください。
Uint8デ,タを管理するクラス
この例では,組み込みのuint8
クラスから派生したクラスを示します。このクラスは,uint8
値で定義されている強度メジのデタの集合を維持するプロセスを簡素化します。クラスの基本的な操作には,次のようなものがあります。
オブジェクトデタストレジを減らすために,さまざまなクラスのメジデタを
uint8
に変換する機能。サブクラスオブジェクトに含まれる強度▪▪メ▪▪ジを表示するメソッド
uint8
デ,タでサポ,トされるすべてのメソッドを使用する機能(たとえば,大小
,ンデックス付け,重塑
、bitshift
、猫
、fft
,算術演算子など)。
クラスのデータは,サブクラスオブジェクトのスーパークラスの部分に格納されている強度イメージデータの行列になります。この方法では,プロパティは必要ありません。
次のように,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
オブジェクトを返し,uint8
のhorzcat
とvertcat
メソッドを継承するので,連結操作は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);