5

表示する行数をユーザーから入力し、それに応じて次のような出力を行うMatlabプログラムを作成しようとしています:

1
2 2
3 3 3

.. すぐ

これで、2 つの for ループを使用してこの出力を取得できましたが、1 つの for ループで同じことを行うことは可能ですか? 具体的には、for ループの反復値を sprintf/fprintf ステートメントに渡して、'%3d' と同様の方法で文字列をフォーマットし、sprintf/fprintf ステートメントが各行に出力される変数の数を知っています。あまり面倒ではなかったと思います。

ありがとうございました!

シャンタヌ。

4

2 に答える 2

2

次のように、パススルーごとに適切なサイズの配列を作成するだけです。

fid=1; % Will print out to the stdout, but can replace this with the folder to write to
for x=1:3
   stuff=zeros(x,1)+x;
   fprintf(fid,'%s ',stuff)
   fprintf(fid,'\n');
end

配列がステートメントに渡された場合、fprintf配列が終了するまで単純に繰り返されることに注意してください。

于 2012-12-19T14:45:44.817 に答える
2

sprintf関数を試してください。ここにドキュメントがあります。あなたが次のようなことをするより:

sprintf('something %[flag][width].[precision][conversion] %...', arg1, ...)

整数の小数の場合は、次のようにすることができます。

sprintf('%d', integer)
于 2012-12-19T14:47:52.953 に答える