25

ベクトルがあり、x = (1, 2, 3)それをとして表示(印刷)したいと思いますAnswer: (1, 2, 3)

私は次のような多くのアプローチを試しました。

disp('Answer: ')
strtrim(sprintf('%f ', x))

しかし、それでも必要な形式で印刷することはできません。

誰かが私に解決策を教えてもらえますか?

編集: 値と(の長さ)のx両方が事前にわかっていません。

4

6 に答える 6

35

私はよりクリーンな以下を好みます:

x = [1, 2, 3];
g=sprintf('%d ', x);
fprintf('Answer: %s\n', g)

出力する

Answer: 1 2 3
于 2015-01-08T13:42:49.670 に答える
8

使用できます

x = [1, 2, 3]
disp(sprintf('Answer: (%d, %d, %d)', x))

これにより、

Answer: (1, 2, 3)

任意のサイズのベクトルの場合、使用できます

disp(strrep(['Answer: (' sprintf(' %d,', x) ')'], ',)', ')'))

別の方法は

disp(strrep(['Answer: (' num2str(x, ' %d,') ')'], ',)', ')'))
于 2013-02-17T18:59:56.367 に答える
5

Matlab のstrjoin機能を利用する別のアプローチを次に示します。値間の区切り記号をstrjoin簡単にカスタマイズできます。

x = [1, 2, 3];
fprintf('Answer: (%s)\n', strjoin(cellstr(num2str(x(:))),', '));

これにより、次の結果が得られます。Answer: (1, 2, 3)

于 2015-10-02T15:38:49.217 に答える
1

この方法を試すことができます:

fprintf('%s: (%i,%i,%i)\r\n','Answer',1,2,3)

これが役立つことを願っています。

于 2013-02-17T18:29:19.580 に答える
1

x のすべての要素をベクトル x としてこの形式で出力する、より一般化されたソリューションを次に示します。

x=randperm(3);
s = repmat('%d,',1,length(x));
s(end)=[]; %Remove trailing comma

disp(sprintf(['Answer: (' s ')'], x))
于 2013-02-18T11:14:41.467 に答える
0

複素数を持つ可能性のあるベクトルを出力するには -

fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));
于 2016-02-24T14:46:52.010 に答える