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

Edw*_*its 22 matlab printf disp

我有一个矢量x = (1, 2, 3),我想显示(打印)它Answer: (1, 2, 3).

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

disp('Answer: ')
strtrim(sprintf('%f ', x))
Run Code Online (Sandbox Code Playgroud)

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

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

编辑: 两个值和(长度)x都不提前知道.

Uri*_*hen 32

我更喜欢以下,更清洁:

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

哪个输出

Answer: 1 2 3
Run Code Online (Sandbox Code Playgroud)


H.M*_*ter 8

您可以使用

x = [1, 2, 3]
disp(sprintf('Answer: (%d, %d, %d)', x))
Run Code Online (Sandbox Code Playgroud)

这导致了

Answer: (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

对于任意大小的矢量,您可以使用

disp(strrep(['Answer: (' sprintf(' %d,', x) ')'], ',)', ')'))
Run Code Online (Sandbox Code Playgroud)

另一种方法是

disp(strrep(['Answer: (' num2str(x, ' %d,') ')'], ',)', ')'))
Run Code Online (Sandbox Code Playgroud)

  • `fprintf('%s%s\b\b%s \n','答案:(',sprintf('%d,',x),')');`似乎更清晰,并且不输出空格之后`(`. (2认同)

And*_*w H 5

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

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

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