Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

который выводит

Answer: 1 2 3

Ответ 2

Вы можете использовать

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

Ответ 3

Здесь другой подход, который использует функцию Matlab strjoin. С помощью strjoin легко настроить разделитель между значениями.

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

В результате получается: Answer: (1, 2, 3)

Ответ 4

Вы можете попробовать таким образом:

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

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

Ответ 5

Вот более обобщенное решение, которое печатает все элементы x вектора x в этом формате:

x=randperm(3);
s = repmat('%d,',1,length(x));
s(end)=[]; %Remove trailing comma

disp(sprintf(['Answer: (' s ')'], x))

Ответ 6

Чтобы напечатать вектор, который, возможно, имеет комплексные числа -

fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));