#author("2020-10-14T17:22:41+09:00","default:Miyashita","Miyashita") #author("2020-10-14T17:23:02+09:00","default:Miyashita","Miyashita") *function 作成 [#zf35b6e4] 自作の function を作成するにあたってのメモ書き. ** function をどこに格納するか [#ra8cf421] ***クラスでまとめる [#fa58c7a5] 同族の function は,クラスに押し込んで参照する.定義の方法については [[クラス定義>../class]] に記載.~ プロパティを必要としない function であっても, #codeprettify(lang-matlab){{ methods (Static) methods (Static) }} と定義してその中に 普通の function を入れてしまえば良い.~ #codeprettify(lang-matlab){{ 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 が使える.~ ~ ~ ***ディレクトリにまとめる [#r297cf06] function 群は何らかのディレクトリに押し込んで,一時的に addpath で追加している #codeprettify(lang-matlab){{ addpath('./localfunc') % 一時的にパス追加,メインルーチンの最初に書く }} #codeprettify(lang-matlab){{ rmpath('./localfunc') % パスから除く,メインルーチンの最後に書く,必要なら実行 }} addpath の path 追加は,一度 MATLAB を閉じると効果が消える.~ ~ ~ **入力引数の数を可変に - nargin, varargin[#fad8f801] nargin を使うことによって,入力引数の個数を調整することが可能.~ 引数の数による場合分けができて効率が良い.~ narginchk または if〜nargin で数の確認を行うことができる.~ 例えば function の中に以下の文を挿入すると, 引数が 4 個と 5 個の場合にのみ実行され,その他はエラーメッセージが出現する. #codeprettify(lang-matlab){{ % 簡単に narginchk(4,5) }} #codeprettify(lang-matlab){{ % これでも大体同じ if nargin < 3 || nargin > 6; error('Invalid number of arguments') end }} varargin は便利だが,自作 function では可読性が落ちるような気がする.~ 使用方法には注意が必要.