2016-04-25 15 views
0

diesen Code zu verstehen Versuch:Verstehen Auswerte- und Schleifen

A = [1 2 3] 

T = A(:,1:end); 

fprintf('\nvalues ', T); 

A eine Matrix der Dimension erstellt 1 x 3

Wenn ich diesen Code ausführen, diese gedruckt wird:

A = 

    1  2  3 

Warum wird T nicht implizit ausgewertet und auf dem Bildschirm ausgegeben?

Ich bin nicht mit dieser Syntax vertraut: A(:,1:end); ist dies die erste Spalte der Matrix und Schleifen?

+0

eine Codezeile ohne Ein Semikolon gibt das Ergebnis dieser Zeile an das Befehlsfenster zurück. Es ändert sich nicht, wie diese Zeile ausgewertet wird. Semikolons werden verwendet, damit Sie beim Erstellen von MATLAB-Ausdrücken keine unnötige Ausgabe im Befehlsfenster sehen. Außerdem ist 'T = A (:, 1: end);' ziemlich überflüssig ... es heißt, auf Matrix 'A' so zuzugreifen, dass Sie auf alle Zeilen zugreifen (1. Dimension: ':') und Erhalten aller Spalten von der ersten Spalte bis zum Ende (2. Dimension: "1: Ende"). Sie können auch einfach 'T = A;' sagen, weil Sie im Wesentlichen die gesamte Matrix kopieren. – rayryeng

Antwort

3

Die Codezeilen, die im Bildschirm "implizit" ausgewertet werden, sind diejenigen, die nicht mit ; enden. Der Semikolonoperator unterdrückt das Drucken des Ergebnisses dieser Zeile.

in Ihrem Code

A = [1 2 3] % No semicolon -> print 

T = A(:,1:end); % semicolon -> no print 

Das end Schlüsselwort hat nichts mit dem Druck zu tun. Es ist ein Schlüsselwort, das sehr nützlich ist, um Operationen in Matlab durchzuführen.

sagen A(:,1:end) Sie MATLAB sagen "nehmen alle Werte (:) von Spaltenindizes ab 1 bis zur letzten Spalte der Matrix end. Grundsätzlich sind in diesem Fall alle Werte von A. Sie können versuchen, A(1:end,1:end) und Kontrolle, die die gleiche Sache zurückgibt.

Für ein gutes Beispiel, könnten Sie die ganze Matrix aber die erste Reihe wollen, dann würden Sie A(2:end,:) verwenden.