粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

MATLABで自動でファイル名を分割・生成

ときどき次のような言葉を思い出します。

「コンピュータは繰り返し作業が得意なのだから
コンピュータに対して繰り返し人力でInputするのは何か間違っている。」

まったくもってその通りで最近これに気をつけてプログラムを組もうと意識しています。

背景と目標

とあるデータファイル”data_fugafuga.txt ”を読み込んで図をプロットし,
”fugafuga.eps”なんていうファイルを生成したい。


即ち,『 読み込んだファイル名にちなんだ名前のファイル名を勝手に生成したい 』

解決法

使用する関数は

  • strsplit関数:入力されたファイル名をある規則で分割する
  • strcat関数:いくつかの文字列を結合する


実行コードは

input = 'data_fuga.txt';

strings = strsplit(input,{'_','.'})

output = strcat(strings(2),'.eps')

output2 = char(output)

実行結果は

strings = 

    'data'    'fuga'    'txt'


output = 

    'fuga.eps'


output2 = 

    fuga.eps

2つ目のコマンドはinputの文字列をアンダーバーとカンマで区切るもので,この時"strings"には
[data] [fuga] [txt] という風に文字列「セル配列」の配列が格納されます。

従って3つ目のコマンドで2つ目の要素 [fuga]と.epsを結合したファイル名が自動生成されるわけです。

ただし,この場合の出力は「文字列」ではなく「セル配列」になります。
従って最終的にchar関数を用いて文字列に変換してようやく,ファイル名として使うことが出来ます。

この罠には気をつけてください。