Как отобразить (распечатать) вектор в Matlab?
У меня есть вектор x = (1, 2, 3)
и я хочу отобразить (напечатать) это как Answer: (1, 2, 3)
,
Я перепробовал много подходов, в том числе:
disp('Answer: ')
strtrim(sprintf('%f ', x))
Но я до сих пор не могу распечатать его в нужном мне формате.
Может ли кто-нибудь указать мне на решение, пожалуйста?
РЕДАКТИРОВАТЬ: оба значения и (длина) 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 strjoin
функция. С strjoin
Легко настроить разделитель между значениями.
x = [1, 2, 3];
fprintf('Answer: (%s)\n', strjoin(cellstr(num2str(x(:))),', '));
Это приводит к: 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('%s: (%i,%i,%i)\r\n','Answer',1,2,3)
Надеюсь, это поможет.
Чтобы напечатать вектор, который возможно имеет комплексные числа
fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));