俺言語。

自分にしか理解できない言語で書かれた備忘録

【matlab】構造体のメンバを一括して出力する方法

ベクトルではなくリニアインデックス順に順次に出力されてくる関数の対応がよくわからなかったのでメモ。



<題材>


>>a = dir(matlabroot);
a =

22x1 struct array with fields:
    name
    date
    bytes
    isdir
    datenum


--------------------------

・単一のフィールドを取り出す方法 →インデックスで指定可能
>> a(1)
ans =
       name: '.'
       date: '04-9-2013 16:02:16'
      bytes: 0
      isdir: 1
    datenum: 7.3548e+05
---------------------------
・すべてのメンバを一括して取り出す方法1 →vertcatを使う
>> b = vertcat(char(a.name))

b =
.            
..            
appdata      
bin          
etc          
extern       
help         

※charがないと文字数が合わず連結できない。
※vertcatで縦につなぐのがコツ。’[ ]’やhorzcatで出力すると全部つながって一行になる
※最終的な出力をcellにする場合はcellstr(vertcat(char(a.name)))でok
---------------------------
・すべてのメンバを一括して取り出す方法2 → struct2cellを使う

**Matlabリファレンスを参照**