C言語っぽくもできるらしいんだけど、それだと遅いので、Octaveのコマンドを使った方がいいと思う。Cフラグ立てて、fscanfとかsscanfとかもいいんだけど、それよりはデータを事前にOctaveの読み込みやすい形にしといてload関数でガシャポンと読み込んだ方が、多分楽。
loadを使う方法
データが、hoge.datとして、
#t ch1 ch2 0 0.1 0.2 1 0.15 0.25 ...
とかだったとして、
> load hoge.dat
とすると、hogeという変数にhoge.datのデータが丸ごとコピーされます。すげー。超楽。文字列が入ってたりすると読み込めないけど、最初からデータの形式がどういうものか分かってれば問題なく読み込めます。
そして、上のように読み込んでから、例えば2行目のを読み込みたいとすると、
> hoge (:,2) 0.1 0.15 ...
とか出てきます。1行目とか3行目とかを出したいときは上の数字を返れば良いっぽい。
また、時間tをtという変数にコピーしたいときは、
> t = hoge (:,1);
でできる。あとあれ、結果を一々出してくれなくても良い場合は文末にセミコロン(;)を付けると良いです。
fgetsとsscanfを使う方法
C言語っぽくやります。
最初に、C言語でファイルポインタを定義するのと同じ感じに、
> fp = fopen ("hoge.dat","r");
とします。rは読み込み。wにするとデータがあぽーんします。
その後に、fgetsで読み込み。
> huga = fgets (hoge, 100);
これで100行目まで読み込みます。でもfgetsで読み込んだのは文字列なので、それを実数に変換するためにsscanfを使うらしいです。
> [t, ch1, ch2] = sscanf (huga, "lf\t%lf\t%lf\n", 'C');
とすると、tに1列目、ch1に2列目、ch2に3列目のデータがコピーされます。
'C'はC言語風にやりますよというCフラグらしい。フラグってwww
正直かなり面倒臭い。これならloadを使った方がよっぽどマシである。止むに止まれぬ理由があるとか、結構面倒な形式でデータが構成されてるとかならあれだけど。でもそういうのも別のプログラム言語で事前に処理しときゃ良いっつー話もある。