Matlab で複数のスペースで区切られたデータ (separated by more than one white space) を読み込む → textscan → と思ったが importdata でいいか
Reading in ascii files with white space as delimiter. - MATLAB Answers - MATLAB Central にあった。というかもちろん公式ヘルプもある→ Read formatted data from text file or string - MATLAB textscan - MathWorks United Kingdom。けど、これの存在を知ってないとたどり着けないわけで…
たとえば
f n NODE_X(v) NODE_Y(v) NODE_Z(v) 0 0 -1.5000000e-02 6.1000001e-02 9.4994903e-11 0 1 -1.5000000e-02 6.0000000e-02 2.0000000e-03 0 2 -1.5000000e-02 5.9000001e-02 9.4994903e-11 1 0 -1.5000000e-02 1.0700000e-01 9.4994903e-11 1 1 -1.5000000e-02 1.0800000e-01 -2.0000000e-03 1 2 -1.5000000e-02 1.0900000e-01 9.4994903e-11
みたいなデータを読みたいとする。数値の数値の間に2つ以上のスペースがあるので、ふつうに dlmread とかするとそのスペース自体を 0 とみなされる(っぽい)。これは困る。そこで、
fid = fopen('input.dat') matrix = textscan(fid, '', 'HeaderLines',1, 'CollectOutput',true);
とすれば行ける。HeaderLines のところの 1 はヘッダーが1行だから。
…と思っていたんだけど、importdata でいいわ。