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 の転置をとらなくてはならないのは, 何か変だが, そういうものなの だろう.