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.
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
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,') ')'], ',)', ')'))
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)
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))
Vous pourriez essayer de cette façon:
fprintf('%s: (%i,%i,%i)\r\n','Answer',1,2,3)
J'espère que ça aide.
Pour imprimer un vecteur qui a éventuellement des nombres complexes-
fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));