雲雀は高く空を舞い このページをアンテナに追加 RSSフィード

「ひよこは高く空を舞い」について

2009-10-20

[]オブジェクト指向な書き方 at Matlab 2008a オブジェクト指向な書き方 at Matlab 2008a - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - オブジェクト指向な書き方 at Matlab 2008a - 雲雀は高く空を舞い オブジェクト指向な書き方 at Matlab 2008a - 雲雀は高く空を舞い のブックマークコメント

Matlab 2008aから、クラス定義の仕方とかが変わってずいぶん使いやすくなったようなのでメモ.以前のは使いづらかった記憶があって使ってなかったのでどういう風にやってたのか分からない…。(ので、ネスト関数使ってむちゃくちゃな書き方をしてた.)

リファレンス

リファレンスはこちら.Matlab R2008aのもの。

各種詳細な情報と例題へのリンク

記述例

classdef transducer<handle
    %<handleとすることでハンドルクラスのサブクラスと成る。これにより生成されるオブジェクトはすべて元オブジェクトのハンドル(参照渡しとなる
    properties
        soundspeed = 1540;
        samplingfrequency = 100e6;
        centerfrequency = 3.5e6;
        lambda
        temp=0
    end
    
    methods
        function obj = transducer(f0, fS)
            %% コンストラクタメソッド
            if nargin == 0
            elseif nargin == 1
                obj.centerfrequency = f0;
            else
                obj.centerfrequency = f0;
                obj.samplingfrequency = fS;
            end
        end
        
        function print_soundspeed(obj)
            %% method print
            disp([num2str(obj.tmp), ' : soundspeed = ', num2str(obj.soundspeed)])
            obj.temp = obj.temp+1;
        end
        
        function print_lambda(obj)
            lambda = obj.soundspeed / obj.centerfrequency;
            disp(lambda)
            obj.lambda = lambda;
        end
    end
end

1クラス1ファイル.class定義はclassdef ~ endブロックで。その中にインスタンス変数となる properties ~ endとメソッドをmethods ~ endそれぞれ定義する.

properties

インスタンス変数.properties~endブロックで定義する.ここで使用できるのは定数とmatlab式のみ。(変数は使えない!)

また、プロパティにたいして以下のようにして属性を指定できる

    properties (Hidden)
    % 外部から見えない
        propertyA
    end
   
    properties (Access=public) 
    % Access, SetAccess, GetAccess / Public, protected, private
    end
    
% Access / Get and Set
% GetAccess / Getのみ
% SetAccess / Setのみ
% Public アクセス制限なし
% protected クラスまたは導出クラスからのアクセス
% private  クラスメンバからのみアクセス

など。

methods

クラス名と同じmethodを定義する事でコンストラクタになる

つづく!



tivhhxzuuditivhhxzuudi2011/03/04 17:4490lJzr <a href="http://idqudmeebpew.com/">idqudmeebpew</a>, [url=http://ojtxowrgzmqp.com/]ojtxowrgzmqp[/url], [link=http://fvecrqqbxlmi.com/]fvecrqqbxlmi[/link], http://dkoisewmuxcl.com/

トラックバック - http://chick.g.hatena.ne.jp/allegro/20091020
テクノラティプロフィール