我有一个向量x = (1, 2, 3)
,我想将其显示(打印)为Answer: (1, 2, 3)
。
我尝试了很多方法,包括:
disp('Answer: ')
strtrim(sprintf('%f ', x))
但我仍然无法以我需要的格式打印它。
有人能指出我的解决方案吗?
修改
x
的值和(长度)都不是事先知道的。
答案 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)));