Ich war nur neugierig, ob alle Operatoren in MATLAB intern als Funktionen implementiert sind? Wir haben für fast alle MATLAB-Operatoren gleichwertige Funktionen. plus
für +
, minus
für -
, eq
für ==
und transpose
für '
.MATLAB-Operatoren als Funktionen
Antwort
Ja, so ermöglicht MATLAB das Überladen von Operatoren, indem Infix-Operatoren auf benannte Funktionen abgebildet werden.
Die documentation listet (nach Kategorie) die von den Operatoren aufgerufenen Funktionen auf. Und more here.
Die meisten Operatoren werden durch Funktionen dargestellt, ja.
Eine gründliche Liste wird auf der MathWorks zur Verfügung gestellt Seite Implementing Operators for Your Class, reproduziert hier:
a + b plus(a,b) Binary addition a - b minus(a,b) Binary subtraction -a uminus(a) Unary minus +a uplus(a) Unary plus a.*b times(a,b) Element-wise multiplication a*b mtimes(a,b) Matrix multiplication a./b rdivide(a,b) Right element-wise division a.\b ldivide(a,b) Left element-wise division a/b mrdivide(a,b) Matrix right division a\b mldivide(a,b) Matrix left division a.^b power(a,b) Element-wise power a^b mpower(a,b) Matrix power a < b lt(a,b) Less than a > b gt(a,b) Greater than a <= b le(a,b) Less than or equal to a >= b ge(a,b) Greater than or equal to a ~= b ne(a,b) Not equal to a == b eq(a,b) Equality a & b and(a,b) Logical AND a | b or(a,b) Logical OR ~a not(a) Logical NOT a:d:b colon(a,d,b) Colon operator a:b colon(a,b) a' ctranspose(a) Complex conjugate transpose a.' transpose(a) Matrix transpose command line output display(a) Display method [a b] horzcat(a,b,...) Horizontal concatenation [a; b] vertcat(a,b,...) Vertical concatenation a(s1,s2,...sn) subsref(a,s) Subscripted reference a(s1,...,sn) = b subsasgn(a,s,b) Subscripted assignment b(a) subsindex(a) Subscript index
Ein weiterer guter Ort, um eine Liste zu suchen ist eigentlich die Dokumentation für bsxfun
, die mit sehr leistungsfähigen jedes Element weise Funktion gilt virtuelle Datenreplikation
Oft nützlich ist vertcat
. horizontal vs. vertical Verkettung mit einer durch Kommata getrennte Liste:
>> c = {'a','b'};
>> horzcat(c{:}) % [c{1} c{2}]
ans =
ab
>> vertcat(c{:}) % [c{1};c{2}]
ans =
a
b
Neben vielen anderen dokumentierten Betreiber mit benannten Funktionen, es gibt ein paar undokumentierte diejenigen, die Sie zugreifen können (colon
, transpose
, etc.) mit builtin
:
Klammer
>> x = [4 5 6];
>> builtin('_paren',x,[2 3]) % x([2 3])
ans =
5 6
geschweiften Klammern
>> c = {'one','two'};
>> builtin('_brace',c,2) % c{2}
ans =
two
struct Feldzugriff (dot)
>> s = struct('f','contents');
>> builtin('_dot',s,'f') % s.f
ans =
contents
jedoch beachten, daß die richtige und unterstützte Weise ()
, verwenden {}
oder .
über subsref
ist , subasgn
, und subindex
, abhängig vom Kontext.
Diese Builtins beziehen sich auf die in help paren
beschriebenen Operatoren. Erkunden Sie auch die Interpunktion, die in help punct
aufgeführt ist.
Danke für Ihre Antwort. – erbal
@ user11659 Ich habe mit einer _much_ bessere Liste und Link aktualisiert. – chappjc
Weiß jemand, warum 'A .- B' nicht definiert ist und stattdessen' bsxfun (@minus, A, B) 'verwendet werden muss? Gibt es eine Möglichkeit, diesen Operator manuell zu überladen/zu definieren? –
- 1. Lambda Funktionen als Basisklassen
- 2. Funktionen als Argumente: Starke Kopplung?
- 3. F # Konstruktoren als Funktionen verwenden
- 4. Excel VBA: Sondertypen - Funktionen als Argument für Funktionen
- 5. Ruby anonyme Klassen als erstklassige Funktionen
- 6. PowerShell: Blöcke als Parameter an Funktionen übergeben
- 7. Welche Funktionen werden als erweiterte Python angesehen?
- 8. Warum werden Skript-Cmdlets als Funktionen aufgelistet?
- 9. Liste Funktionen als Auswahlen in Java
- 10. Scala: Probleme mit Funktionen als erstklassige Objekte
- 11. Zahlen als multiplikative Funktionen (komisch, aber unterhaltsam)
- 12. STL-Algorithmen mit Templat-Funktionen als Parameter
- 13. lineare Regression mit Kategorien als Funktionen
- 14. Funktionen als Argumente von variadische Vorlagen
- 15. C++ 11 Lambda-Ausdrücke als Callback-Funktionen
- 16. Funktionen als String in Javascript zurückgeben
- 17. Funktionen eliminieren, die als Parameter definiert sind?
- 18. Array-Elemente als Argument in Funktionen
- 19. Warum Javascript-Funktionen als jQuery-Plugins erstellen?
- 20. Funktionen als Parameter in Swift Passing
- 21. Übergeben von Funktionen als Argumente in Matlab
- 22. Warum nehmen einige OCaml-Funktionen() als Parameter?
- 23. luabind - Funktionen mit mehr als 10 Argumente
- 24. Können Operatoren als Funktionen verwendet werden? (C++)
- 25. Übergeben von Inline-Funktionen als Argumente
- 26. Bereitstellen von WordPress als AWS Lambda-Funktionen?
- 27. Sind PostgreSQL-Funktionen generell schneller als Code?
- 28. Effiziente Verwendung von Funktionen als Argumente
- 29. Sind C# statische Funktionen besser als nicht statische Funktionen, abgesehen von einer reduzierten Speichernutzung?
- 30. Einschränkungen für Funktionen, die als "extern" C "` deklariert sind? C++ - Funktionen noch verwendbar?
Danke für Ihre Antwort. Dieser [link] (http://nf.nci.org.au/facilities/software/Matlab/techdoc/matlab_prog/ch14_o23.html) listet auf, wie man einen Operator überlädt. – erbal