LoginSignup
4
2

More than 3 years have passed since last update.

MATLAB でデータ解析!と、その前に。

Last updated at Posted at 2019-12-17

はじめに

データ解析に役立つ MATLAB ですが、ここではまずデータにアクセスするための下準備について見ていきましょう。例えば、複数人で同じ PC の MATLAB を使う場合、前の人が使った環境が残ってるとやっかいですよね?自分には関係ないフォルダにアクセスしちゃう、同じ名前の知らない関数呼ばれちゃう、なんてことありますよね。そこで、使う人ごとに環境を用意してしまおう、というのがメインです。

バージョン

MATLAB (R2019b) のみ!

結論から

  • 必要なフォルダに前もってパスを通し、終了時にキレイさっぱりが理想!
  • パス関連のコマンドについて、使い方を覚えておくと便利!
  • addpath で通したパスは、MATLAB セッションが切れると削除される!

想定している環境

フォルダ構成はこんな感じです。F1F3 が自由にアクセスしたいフォルダです。F3 にはサブフォルダ F3_sub があります。また、.m の関数はパスを設定するプログラムになります。
2019-12-17_9-20-18.jpg

フォルダが既知で、数が少ない場合

今回みたいに、フォルダが事前に分かっていて、数が少ない場合はこんな感じ。

addTESTpath.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つずつ指定するのは...サブフォルダまで知らないし...と感じたら自動化してみましょう。

addTESTpath_autoh.m
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');

フォルダ情報や構成は、dirgenpath を組み合わせてみました。

結果

こんな感じになりました :grin:
image.png

参考情報

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2