Как отобразить (распечатать) вектор в Matlab?

у меня есть вектор x = (1, 2, 3) и я хочу отобразить (распечатать) его как Answer: (1, 2, 3).

Я пробовал много подходов, в том числе:

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

но я все еще не могу заставить его печатать в формате, который мне нужен.

может кто-нибудь указать мне на решение, Пожалуйста?

EDIT: Как значения, так и (длина)x заранее не известны.

6 ответов


Я предпочитаю следующее, что чище:

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,') ')'], ',)', ')'))

вот еще один подход, который использует преимущества Matlab


можно попробовать так:

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

надеюсь, это поможет.


вот более обобщенное решение, которое печатает все элементы X вектора 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)));