【发布时间】:2013-02-17 17:56:55
【问题描述】:
我有一个矢量x = (1, 2, 3),我想将它显示(打印)为Answer: (1, 2, 3)。
我尝试了很多方法,包括:
disp('Answer: ')
strtrim(sprintf('%f ', x))
但我仍然无法以我需要的格式打印它。
有人可以指点我的解决方案吗?
编辑:
x 的值和(长度)都事先不知道。
【问题讨论】:
我有一个矢量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,') ')'], ',)', ')'))
【讨论】:
fprintf('%s%s\b\b%s\n', 'Answer: (', sprintf('%d, ',x), ')'); 好像更清晰,( 后面不输出空格。
\b,因为如果您将输出捕获到文件中,它将包含文字退格键。
'%d, '(注意空格的位置),然后将', )' 替换为')',以避免空格过多。
,') ')'], ',)', ')')) 让我不寒而栗,努力分辨哪些是字符串,哪些是代码的一部分……不寒而栗跨度>
这是利用 Matlab 的 strjoin 函数的另一种方法。使用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))
【讨论】:
disp(['Answer: (' s ')']);吗?
Answer: (%d,%d,%d)。请注意,repmat 只是创建语法
打印一个可能有复数的向量-
fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));
【讨论】: