Was ist der Unterschied zwischen 5 und [5] in MATLAB?

7

Sie scheinen genau gleich zu sein, wie:

%Vor%

Gibt es einen Unterschied, den ich beachten sollte?

Danke.

    
totally 13.01.2016, 18:09
quelle

3 Antworten

10
  

Gibt es einen Unterschied, den ich beachten sollte?

Nein

    
excaza 13.01.2016 18:11
quelle
4

Obwohl es keinen signifikanten Unterschied gibt, gibt es einen Unterschied.

v1=5; erstellt eine Variable namens v1 , die den Wert 5 hat.

v1=[5]; definiert eine Matrix / einen Skalar mit dem Wert 5; dann verkettet es diese Matrix mit nichts - Verkettung ist die Operation, die von den eckigen Klammern ausgeführt wird, und deshalb brauchen Sie sie, um [1,2,3] zu definieren - und dann wird das Ergebnis der Variablen v1 zugewiesen. Also die Verwendung der eckigen Klammern führt eine zusätzliche Operation durch.

Aus diesem Grund erhalten Sie, wenn Sie Ihren Code in den Editor schreiben, eine m-lint Nachricht mit dem Hinweis

  

Die Verwendung von Klammern [] ist nicht notwendig. Verwenden Sie bei Bedarf Klammern, um sie zu gruppieren.

    
Phil Goddard 13.01.2016 19:15
quelle
4

Es besteht kein Unterschied zwischen [5] und 5 . Aber im Allgemeinen kann es einen Unterschied zwischen einem Ausdruck [f] und f geben, wobei f ein Ausdruck ist. Hier ist ein Beispiel:

c = {10,20,30,40,50,60}; x = c{1:3} y = [c{1:3}]

Hier ist c ein Zellen-Array, also gibt die Operation c{1:3} alle Objekte an den Stellen 1 bis 3 von c als eine durch Komma getrennte Liste zurück, dh sie gibt zurück %Code%. It gibt das Array 10,20,30 nicht zurück. Der Befehl [10,20,30] entspricht also x = c{1:3} , was der Zuweisung von x=10,20,30 dem Wert x entspricht und dann nichts mit den Literalen 10 und 20 tut. Auf der anderen Seite gruppiert der Befehl 30 die durch Kommas getrennte Liste in Klammern y = [c{1:3}] , also entspricht sie [] . Abschließend wird y=[10,20,30] den Wert x haben, während 10 den Wert y haben wird.

    
Lior 13.01.2016 20:13
quelle

Tags und Links