web-dev-qa-db-de.com

Wie wird der Vektor in Matlab angezeigt?

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.

19

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
28
Uri Cohen

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,') ')'], ',)', ')'))
8
H.Muster

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)

5
Andrew H

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))
1

Sie könnten dies versuchen:

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

Ich hoffe das hilft.

1
fpe

So drucken Sie einen Vektor mit möglicherweise komplexen Zahlen

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