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