web-dev-qa-db-fra.com

Comment afficher un vecteur (imprimer) dans Matlab?

J'ai un vecteur x = (1, 2, 3) et je veux l'afficher (imprimer) sous la forme Answer: (1, 2, 3).

J'ai essayé plusieurs approches, notamment:

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

Mais je ne peux toujours pas le faire imprimer dans le format dont j'ai besoin.

Quelqu'un pourrait-il m'indiquer la solution, s'il vous plaît?

EDIT: Les valeurs et la longueur de x ne sont pas connues à l’avance.

19
Edward Ruchevits

Je préfère ce qui suit, qui est plus propre:

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

qui sort

Answer: 1 2 3
28
Uri Cohen

Vous pouvez utiliser

x = [1, 2, 3]
disp(sprintf('Answer: (%d, %d, %d)', x))

Cela se traduit par

Answer: (1, 2, 3)

Pour les vecteurs de taille arbitraire, vous pouvez utiliser

disp(strrep(['Answer: (' sprintf(' %d,', x) ')'], ',)', ')'))

Une autre manière serait

disp(strrep(['Answer: (' num2str(x, ' %d,') ')'], ',)', ')'))
8
H.Muster

Voici une autre approche qui tire parti de la fonction strjoin de Matlab. Avec strjoin, il est facile de personnaliser le délimiteur entre les valeurs.

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

Cela se traduit par: Answer: (1, 2, 3)

5
Andrew H

Voici une solution plus généralisée qui imprime tous les éléments de x le vecteur x dans ce format:

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

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

Vous pourriez essayer de cette façon:

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

J'espère que ça aide.

1
fpe

Pour imprimer un vecteur qui a éventuellement des nombres complexes-

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