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

这是利用 Matlabstrjoin功能的另一种方法。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=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 回答