オブジェクト配列 †配列の作成 †ここでは自作のclassを用い,Nx1 の配列を作成する.NxM 配列も手法は同じ. A(N,1) = myclass; で Nx1 配列のmyclassが生成される. classdef MCUtils % Class MCUtils % Written by ----- % last modified xx.xx.xx properties dirpath nregion regioninfo depth end methods % Contsructor function obj = MCUtils(argstr) if nargin ~= 0 % % 1次元配列の場合の例 narray = size(argstr,1); obj(narray,1) = MCUtils; % narray x 1の空のMCUtils作成 for i = 1:narray obj(i).dirpath = argstr(i,:); end end end end end このとき,if nargin ~= 0 〜 end のif文を付け忘れないように. メソッド呼び出し †ブロードキャスト †引数とするインスタンスが配列あっても配列でなくても実行できるようにするには, methods % hogehoge % .... %%%%%%%%%%%%%%%%%%%%% function obj = GetDepth(obj) % % depth取得 % % 引数が配列の場合は1つずつ実行 if numel(obj) > 1 for i = 1:numel(obj) obj(i) = obj(i).GetDepth; % 同じfunction名にして再帰的に実行 end return % 忘れないように end % % 引数が配列でない場合 file = dir(fullfile(obj.dirpath,'*.dep')); obj.depth = hogehoge_func(file); end %%%%%%%%%%%%%%%%%%%%% end 配列である場合,最後にある return を忘れると配列でない場合の箇所も実行してしまいエラーになる. 参考 † |