next up previous contents
Next: fscanf Up: プログラミング Previous: ファイルオープン, クローズ等

   
fprintf

printf は変数にスカラーを用いると, C の printf と同様の働きをする (セクション [*], [*]). これは, fprintf でも 同様である.

printf, fprintf はベクトルや行列をひとつの文で出力することもできる. この際には, 成分の出力の順番に注意が必要である.

行列を fprintf で表示する場合は, 第 1 列目を「横に」表示し, この列が終ったら, 第 2 列目を「横に」表示し, これを繰り返す:

octave:74> c
c =

    1    1
    2    4
    3    9
    4   16
    5   25
    6   36
    7   49
    8   64
    9   81
   10  100
octave:76> printf("%d %d\n", c);
1 2
3 4
5 6
7 8
9 10
1 4
9 16
25 36
49 64
81 100

このため, 2 列からなる行列を, printf 文で出力し, gnuplot でプロットする 時, あるいはそのデータを読み込む時には注意が必要である.

[fid, msg] = fopen("test.dat", "w", "native");
a = [1:0.1:2]';
b = sin(a);
c = [a b]'
fprintf(fid, "%f %f\n", c);
fclose(fid);
という内容のファイル printtest.m を作り,
octave:1> printtest
結果は,
1.000000 0.841471
1.100000 0.891207
1.200000 0.932039
1.300000 0.963558
1.400000 0.985450
1.500000 0.997495
1.600000 0.999574
1.700000 0.991665
1.800000 0.973848
1.900000 0.946300
2.000000 0.909297
となる. c の転置をとらなくてはならないのは, 何か変だが, そういうものなの だろう.



Toru Sasaki
2001-07-23