Ich habe einen Vektor x = (1, 2, 3)
und möchte ihn als Answer: (1, 2, 3)
anzeigen (drucken).
Ich habe viele Ansätze ausprobiert, darunter:
disp('Answer: ')
strtrim(sprintf('%f ', x))
Aber ich kann es immer noch nicht in dem Format drucken, das ich brauche.
Könnte mich bitte jemand auf die Lösung hinweisen?
EDIT: Sowohl die Werte als auch (Länge von) x
sind vorab nicht bekannt.
Ich bevorzuge das Folgende, das sauberer ist:
x = [1, 2, 3];
g=sprintf('%d ', x);
fprintf('Answer: %s\n', g)
welche Ausgänge
Answer: 1 2 3
Sie können verwenden
x = [1, 2, 3]
disp(sprintf('Answer: (%d, %d, %d)', x))
Das führt zu
Answer: (1, 2, 3)
Für Vektoren beliebiger Größe können Sie verwenden
disp(strrep(['Answer: (' sprintf(' %d,', x) ')'], ',)', ')'))
Ein alternativer Weg wäre
disp(strrep(['Answer: (' num2str(x, ' %d,') ')'], ',)', ')'))
Hier ist ein anderer Ansatz, der die Funktion strjoin
von Matlab nutzt. Mit strjoin
können Sie das Trennzeichen zwischen Werten einfach anpassen.
x = [1, 2, 3];
fprintf('Answer: (%s)\n', strjoin(cellstr(num2str(x(:))),', '));
Dies führt zu: Answer: (1, 2, 3)
Hier ist eine allgemeinere Lösung, die alle Elemente von x dem Vektor x in diesem Format druckt:
x=randperm(3);
s = repmat('%d,',1,length(x));
s(end)=[]; %Remove trailing comma
disp(sprintf(['Answer: (' s ')'], x))
Sie könnten dies versuchen:
fprintf('%s: (%i,%i,%i)\r\n','Answer',1,2,3)
Ich hoffe das hilft.
So drucken Sie einen Vektor mit möglicherweise komplexen Zahlen
fprintf('Answer: %s\n', sprintf('%d ', num2str(x)));