csvやxlsファイルとのやり取り

csvファイルやxlsファイルへの書き出しや読み出しとその応用

一つ上へ

シミュレーションのための変数をcsvファイルやxlsファイルから読み出したり, シミュレーションの結果をcsvファイルへ書き出したりするための関数がMatlabには用意されている.

csvファイル関係

xls(エクセル)ファイル関係

・csvファイル関係

・csvファイルへの書き出しやcsvファイルからの読み出しは, それぞれcsvreadとcsvwriteである.

それぞれ, 書式は以下の通り.

csvwrite('○○○.csv',A);

とすると, 行列Aが○○○.csvファイルへ書きこまれる.

・csvファイルを読み出すには, 以下のようにすればよい.

B=csvread('○○○.csv');

こうすると, ○○○.csvのデータが読み出され, Bに代入される.

・csvreadやcsvwriteは簡単に使うことができるが, シートを変えたりすることができないと思う.

なので, 異なるデータや複数のデータを別々のものとして保存するためには, その分だけcsvファイルが必要となり, ファイルが膨大になってしまい, 読み出しなどが面倒である.

・xls(エクセル)ファイル関係

・シートを扱うことができるxls(エクセル)ファイルへの出力やそのファイルからの読み出しなどは, 以下のように行う. まず, ファイルへの書き込みは以下のように行う.

xlswrite('○○○.xls',A,'△');

こうすると, Aの内容が○○○.xls(ファイルがない場合は作られる)の△(という名前の)シートへ書きこまれる. ○○○.xlsは, パス(C:\Program Files\MATLAB71\work\○○○.xlsなど)で書いたほうが確実である.

・Vistaは, パスがめんどくさいので, 保存したい場所に行って, そのフォルダのパスを調べてからのほうがいいと思う.

・△というシートがなければ, 「警告: Added specified worksheet.」とかいう警告が出るが, 気にしなくても大丈夫. もし, この警告を消したいなら, 「warning off MATLAB:xlswrite:AddSheet」とすればよい. また, シートを自動で動かしたいなどの場合は, '△'の部分を変えて, たとえば以下のようにすればよい.

for i=1:3

xlswrite('○○○.xls',A{i},num2str(i));

end

・こうすると, セル配列で作ったAのi番目の要素が"i"という名前のシートに書きこまれる.

なかった場合は, 上に書いてあるようなエラーが出る.

・私個人として使う場合は, ファイルをまず準備して, シートを全部消去した状態にしている. これは, xlswriteで書きこんだ場合は, 最後に書いた(△やnum2str(i)などの部分)のにsheet1などの名前を入れなければならず, これは, 自動で回す場合などに邪魔になってしまい, 結局最初に準備してあるシートには書きこまないままということになってしまうからである.

・この問題点の回避方法としては, num2str(i)を使わず,

for i=1:3

xlswrite('○○○.xls',A{i},i);

end

とすれば, Sheet1, Sheet2, Sheet3の順に書きこまれていく.

・次に, ファイルからの読み出しであるが, csvreadと特に大きな変化もなく, 以下のようにすればよい.

A=xlsread('○○○.xls','△');

○○○.xlsはさっきと同じで, パスで書いたほうがよいだろう.

このようにすると, ○○○.xlsの「△」というシートの中身が読みだされて, Aに代入される. ここで, ○○○.xlsというファイルの中に「△」というシートがなければエラー終了する.

○○○.xlsからは, 以下のようにすると, 自動で順次読みだされる.

for i=1:4

test{i}=xlsread('○○○.xls',i);

end

とすれば, ○○○.xlsファイルのi番目のシート(Sheet1, Sheet2, Sheet3, Sheet4など)からデータが読みだされ, testというセル配列のi番目に代入される.

for i=1:4

test{i}=xlsread('○○○.xls',num2str(i));

end

とすると, シートの名前が"i"のところから読み出すこととなる.

なので, num2strを使わずにファイルに書き込み, 使わずに読みだすと楽であろう.(調べてみて初めて知ったので, 私もそうする予定だ.)

参考になったホームページ

MathWorkのHP(英語)

初心者によるMATLABメモのExcelファイルを読み込む

一つ上へ