function 作成

自作の function を作成するにあたってのメモ書き.

function どこに格納するか

クラスでまとめる

同族の function は,クラスに押し込んで参照する.
プロパティを必要としない function であってとしても,

    methods (Static)

と定義してその中に 普通の function を入れてしまえば良い.

classdef MyClass
    properties
        XXX
        YYY
    end

    %% 
    methods
        function obj = FuncObj(obj)
            ... XXXX ...
        end
    end

    methods (Static)
        %% Table of stations
        function argout = MyFunc(argin)
            ... XXXX ...
        end
    end
end

この場合 MyClass.MyFunc(argin) のようにして function が使える.


ディレクトリにまとめる

function 群は何らかのディレクトリに押し込んで,一時的に addpath で追加している

addpath('./localfunc') % 一時的にパス追加,メインルーチンの最初に書く
rmpath('./localfunc') % パスから除く,メインルーチンの最後に書く,必要なら実行

addpath の path 追加は,一度 MATLAB を閉じると効果が消える.


入力引数の数を可変に - nargin, varargin

nargin を使うことによって,入力引数の個数を調整することが可能.
引数の数による場合分けができて効率が良い.
narginchk または if〜nargin で数の確認を行うことができる.
例えば function の中に以下の文を挿入すると, 引数が 4 個と 5 個の場合にのみ実行され,その他はエラーメッセージが出現する.

% 簡単に
narginchk(4,5)
% これでも大体同じ
if nargin < 3 || nargin > 6;
    error('Invalid number of arguments')
end

varargin は便利だが,自作 function では可読性が落ちるような気がする.
使用方法には注意が必要.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2020-08-04 (Tue) 07:01:45 (50d)