MATLAB でデータ解析!と、その前に。
はじめに
データ解析に役立つ MATLAB ですが、ここではまずデータにアクセスするための下準備について見ていきましょう。例えば、複数人で同じ PC の MATLAB を使う場合、前の人が使った環境が残ってるとやっかいですよね?自分には関係ないフォルダにアクセスしちゃう、同じ名前の知らない関数呼ばれちゃう、なんてことありますよね。そこで、使う人ごとに環境を用意してしまおう、というのがメインです。
バージョン
MATLAB (R2019b) のみ!
結論から
- 必要なフォルダに前もってパスを通し、終了時にキレイさっぱりが理想!
- パス関連のコマンドについて、使い方を覚えておくと便利!
-
addpath で通したパスは、MATLAB セッションが切れると削除される!
想定している環境
フォルダ構成はこんな感じです。F1 ~ F3 が自由にアクセスしたいフォルダです。F3 にはサブフォルダ F3_sub があります。また、.m の関数はパスを設定するプログラムになります。
フォルダが既知で、数が少ない場合
今回みたいに、フォルダが事前に分かっていて、数が少ない場合はこんな感じ。
function addTESTpath
% addTESTpath.m が置かれているフォルダ
rootDir = fileparts(mfilename('fullpath'));
% パスに追加するフォルダのリスト
path_temp = {};
path_temp{end+1} = rootDir;
path_temp{end+1} = fullfile(rootDir,'F1');
path_temp{end+1} = fullfile(rootDir,'F2');
path_temp{end+1} = fullfile(rootDir,'F3');
path_temp{end+1} = fullfile(rootDir,'F3', 'F3_sub');
% パスへ追加
addpath(path_temp{:},'-end');
1行目は、addTESTpath.m が置かれているフォルダのパスが出てきます。
rootDir = fileparts(mfilename('fullpath'));
そこがルートフォルダになるので、その下にあるフォルダを追加していくイメージです。最後に addpath を使用して終わり。パスの優先順位を下げたい場合に、-end オプションを使用します。
addpath(path_temp{:},'-end');
ポイントは、この addpath で通したパス。今のセッションだけ有効です。 MATLABを再起動すれば、この情報は消えています。つまり、次使う人にとって余分な情報は残りません!
フォルダが未知、もしくは既知でも数が多い場合
上記みたいに、1つずつ指定するのは...サブフォルダまで知らないし...と感じたら自動化してみましょう。
function addTESTpath_auto
% addTESTpath_auto.m が置かれているフォルダ
rootDir = fileparts(mfilename('fullpath'));
% パスに追加するフォルダのリスト(フォルダだけ抽出)
flist = dir(rootDir);
flist = flist(~ismember({flist.name}, { '..'}));
flist = flist([flist.isdir]);
% パスに追加するフォルダのリスト
flist_full = arrayfun(@(x) genpath(x.name),flist,'UniformOutput',false);
% パスへ追加
addpath(flist_full{:},'-end');
フォルダ情報や構成は、dir や genpath を組み合わせてみました。
結果
参考情報
Author And Source
この問題について(MATLAB でデータ解析!と、その前に。), 我々は、より多くの情報をここで見つけました https://qiita.com/kkado/items/3a24636d5ea499639cfc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .