連載
» 2014年07月18日 11時00分 UPDATE

無償ソフトで技術計算しよう【プログラミング処理編】(1):FreeMatでCSVファイルを入出力する (1/2)

「プログラミング処理編」では、ファイル入出力や標準的なアルゴリズムなどソフトウェア開発に必要な方法について取り上げる。今回は、変数データの入出力やCSVファイルの入出力について解説する。

[伊藤孝宏,MONOist]

 今回から「プログラミング処理編」として3回にわたって、ファイル入出力や標準的なアルゴリズムなどソフトウェア開発に必要な方法について説明します。1回目となる今回は、ファイル入出力について解説します。

 計算結果をファイルに保存したり、開いたりといっただけではなく、「他のソフトで作成したデータを利用したい」「信号処理のために、waveファイルを読み込みたい」「画像処理のために、画像ファイルを開きたい」といった各種処理をしようとすると、ファイル入出力に関する処理が必要になります。

 このうち、変数をファイルに入出力する方法と、Excelなどの表計算ソフトとのデータ互換として、CSVファイルの入出力について説明します。waveファイルの入出力については「信号処理編」で、また画像ファイルの入出力については、「画像処理編」で説明します。

筆者注:FreeMatはコマンド入力後に[Enter]キーを押すとコマンドを実行します。本連載では[Enter]キーの記述を省略しますが、操作の際にはコマンド入力後に[Enter]キーの入力が必要です。



FreeMatでエンジニアリング計算:
入門編
グラフィックス編
プログラミング基礎編

変数データの入出力

 変数データの保存には「save」コマンドを、読み取りには「load」コマンドを用います。saveコマンドヘルプとloadコマンドヘルプの一部を下記に示します。

Saves a set of variables to a file in a machine independent format. There are two formats for the function call. The first is the explicit form, in which a list of variables are provided to write to the file: save filename a1 a2 ...

In the second form, save filename

all variables in the current context are written to the file. The format of the file is a simple binary encoding (raw) of the data with enough information to restore the variables with the load command.

 意味は、「ハードウェアに依存しない形式でファイルにデータを保存するには、2つの方法があります。1つは、保存したい変数を書き下す方法で、save filename a1 a2 ……と記述します。もう1つは、全ての変数を保存する方法で、save filenameと記述します。保存されるファイルは、読み取りコマンドloadでデータを復元するに十分なデータをバイナリ形式で保存したファイルとなります」ということです。

Loads a set of variables from a file in a machine independent format. The load function takes one argument: load filename,

or alternately, load('filename')

This command is the companion to save. It loads the contents of the file generated by save back into the current context. Global and persistent variables are also loaded and flagged appropriately. By default, FreeMat assumes that files that end in a .mat or .MAT extension are MATLAB-formatted files.

 こちらの意味は「コマンドloadはハードウェアに依存しない形式のファイルから変数データを読み取ります。loadの引数は1つで、load filename、あるいは、load('filename')と記述します。loadはsaveと対になるコマンドで、saveで保存された内容をグローバルなどの状態も含めてワークスペース(メモリに格納された変数データ群)に復元します。MATLABのファイル形式matで保存されることを想定しています」ということです。

 早速、試してみましょう。コマンドウィンドウにx=rand(10);y=rand(10);と入力し、10行10列の変数xとyを作成します。次に、save xy.freematと入力すると、カレントフォルダにxy.freematというファイルができます。save xy.freematはsave('xy.freemat')と記述しても構いません。

 その後、「clear」と入力すると、Variablesウィンドウからは変数xとyが消え、ワークスペースからxとyが消えたことが分かります。以上のワークスペース上の変数の確認は、コマンドウィンドウで「who」と入力しても確認できます。次のように表示されます。

Variable Name       Type   Flags             Size
            ans    double                    [0x0]

 では、loadコマンドでデータを復元してみます。load xy.freematと入力すると、「Variables」ウィンドウにxとyが現れます。load xy.freematはload('xy.freemat')と記述しても構いません。ファイル名は、フルパス(ドライブ名から始まるファイルの位置も含めた記述)で記述すると、カレントフォルダ以外にファイルを保存したり、読み取ったりできます。

 例えば、save c:\xy.freematとすると、Cドライブ直下に保存されます。ファイル名の拡張子は任意です(例ではfreematとした)。

 ただし、FreeMatはMATLABとのデータ互換性があるので、MATLABのファイル拡張子matを使うと、FreeMatで保存したデータをMATLABで読み取ったり、MATLABで保存したデータをFreeMatで読み取ったりできます。そのため、拡張子にはmatを使うことをオススメします。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.