我有一个矢量x = (1, 2, 3)
,我想将它显示(打印)为Answer: (1, 2, 3)
.
我尝试了很多方法,包括:
disp('Answer: ')
strtrim(sprintf('%f ', x))
但我仍然无法让它以我需要的格式打印。
有人可以指出我的解决方案吗?
编辑:x
预先不知道
值和(长度) 。
我更喜欢以下更干净的:
x = [1, 2, 3];
g=sprintf('%d ', x);
fprintf('Answer: %s\n', g)
哪个输出
Answer: 1 2 3
您可以使用
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,') ')'], ',)', ')'))
这是利用 Matlabstrjoin
功能的另一种方法。strjoin
可以轻松自定义值之间的分隔符。
x = [1, 2, 3];
fprintf('Answer: (%s)\n', strjoin(cellstr(num2str(x(:))),', '));
这导致:Answer: (1, 2, 3)
你可以这样试试:
fprintf('%s: (%i,%i,%i)\r\n','Answer',1,2,3)
我希望这有帮助。
这是一个更通用的解决方案,它以这种格式打印向量 x 的所有元素:
x=randperm(3);
s = repmat('%d,',1,length(x));
s(end)=[]; %Remove trailing comma
disp(sprintf(['Answer: (' s ')'], x))
打印一个可能有复数的向量-
fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));