如何在Matlab中显示(打印)矢量?

时间:2013-02-17 17:56:56

标签: matlab printf disp

我有一个向量x = (1, 2, 3),我想将其显示(打印)为Answer: (1, 2, 3)

我尝试了很多方法,包括:

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

但我仍然无法以我需要的格式打印它。

有人能指出我的解决方案吗?

修改 x的值和(长度)都不是事先知道的。

6 个答案:

答案 0 :(得分:30)

我更喜欢以下,更清洁:

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

输出

Answer: 1 2 3

答案 1 :(得分: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,') ')'], ',)', ')'))

答案 2 :(得分:5)

这是利用Matlab strjoin功能的另一种方法。使用strjoin,可以轻松自定义值之间的分隔符。

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

这导致:Answer: (1, 2, 3)

答案 3 :(得分:1)

您可以尝试这种方式:

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

我希望这会有所帮助。

答案 4 :(得分:1)

这是一个更通用的解决方案,它以这种格式打印x向量x的所有元素:

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

disp(sprintf(['Answer: (' s ')'], x))

答案 5 :(得分:0)

打印可能具有复数的矢量 -

fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));