Eigene Norm in Matlab schreiben |
06.05.2012, 12:18 | steviehawk | Auf diesen Beitrag antworten » | |||||||||||||||||||||||||
Eigene Norm in Matlab schreiben Hallo Leute, ich möchte gerne eine eigene Matlabfunktion mynorm schreiben, die die gleiche Funktion erfüllt wie die interne norm Funktion. Aber ich habe noch so meine Probleme. Meine Ideen: Ich dachte mir das so:
Mir ist klar, dass A und A' nicht gerade Normen darstellen, aber ich wollte es mal einfach lassen zum testen des Prinzips.. Ich muss ja matlab kar machen, dass je nachdem, was man für i einsetzt mynorm eine andere Funktion hat! Wie stelle ich das an. Danke für die Hilfe |
|||||||||||||||||||||||||||
06.05.2012, 12:20 | Airblader | Auf diesen Beitrag antworten » | |||||||||||||||||||||||||
Also von mir kommt erstmal keine weitere Hilfe, solange du es nicht für nötig hältst, in deinen anderen Threads ( Matlab Funktion in Funktion implementieren ) zu antworten. air |
|||||||||||||||||||||||||||
06.05.2012, 12:45 | Airblader | Auf diesen Beitrag antworten » | |||||||||||||||||||||||||
Nachdem das ja nun geschehen ist (ich verlange es übrigens einfach deswegen, da ich den Thread im Auge behalte und ganz gerne eine Rückmeldung hätte, ob es denn nun geklappt hat oder nicht): In der Regel nutzt man hierfür if-Statements. In diesem Fall noch besser wäre jedoch das switch-case-Statement. Je nachdem, wie die konkret implementierte Norm dann schließlich aussieht, kannst du aber vielleicht sogar auf beides verzichten und deinen Parameter direkt als Parameter an Matlab weiterleiten (zum Beispiel als Parameter bei sum, der dann einfach angibt, über welche Dimension summiert wird). Als Beispiel:
ist das selbe wie
ist das selbe wie
Noch ein weiterer Tipp: Nenne eine Variable in Matlab bitte nicht einfach "i", da dies für die imaginäre Einheit steht. Besser ist "ii", doch das wird in der Regel für Schleifen verwendet. Richtig gut wäre es, wenn du dem Ganzen einen Namen gibst, der auch gleich anzeigt, wofür die Variable steht. air |
|||||||||||||||||||||||||||
06.05.2012, 13:09 | steviehawk | Auf diesen Beitrag antworten » | |||||||||||||||||||||||||
Super Danke. Ich habe mich jetzt erstmal für die if - Anweisung entschieden, die kann ich am besten nachvollziehen..
|
|||||||||||||||||||||||||||
06.05.2012, 13:13 | Airblader | Auf diesen Beitrag antworten » | |||||||||||||||||||||||||
Für den Anfänger auch völlig in Ordnung. Langfristig wäre switch/case jedoch schon erheblich besser. Bei der if-Anweisung solltest du folgende zwei Dinge beachten:
air |
|||||||||||||||||||||||||||
06.05.2012, 13:48 | steviehawk | Auf diesen Beitrag antworten » | |||||||||||||||||||||||||
Ich habe noch eine Frage. Es sieht jetzt so aus:
Ich möchte ja, dass mynorm(A,2) das gleiche ist wie mynorm(A), ich also muss ich ja hier:
für die Fragezeichen irgendwie nichts einsetzen, so dass auch der Ausdruck: mynorm(A) also ohne noch was dazu Sinn macht. Hatte es erst mit:
Tipp vielleicht?? Danke Und ich habe noch ein Problem: Ich habe dieses Funktion ja jetzt so geschrieben, dass für A erstmal Matrizen eingesetzt werden sollten. Da ich ja Matrixnormen definiert habe. Jetzt möchte ich aber so wie Matlab erkennen, wenn es sich bei A um einen Vektor handelt. Und dann entsprechende andere Normen, eben Vektornormen berechnen. Ich dachte mir das erst so, dass ich einfach A auch als Variable definieren und dann so was habe:
jetzt wollte ich in der if - Anweisung noch sagen, dass dies nur gilt, wenn Var1 eine Matrix ist.. aber mit
ging nichts.. wie sage ich Matlab, dass das nur gilt, wenn Var2 eine Matrix ist und kann ich 2 Anweisung hinter ein if schreiben? Hab es versucht, aber es klappt nicht so recht.. |
|||||||||||||||||||||||||||
Anzeige | |||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
06.05.2012, 14:33 | steviehawk | Auf diesen Beitrag antworten » | |||||||||||||||||||||||||
Probieren geht über studieren die Funktion isvector(Var1) hilft weiter.. |
|||||||||||||||||||||||||||
06.05.2012, 21:08 | Airblader | Auf diesen Beitrag antworten » | |||||||||||||||||||||||||
Sicher Sollte es nicht eher was anderes sein? Sonst wäre der Parameter ja völlig sinnlos und du könntest ihn einfach weglassen, oder?
"if" ist eine Anweisung, keine Schleife, es wiederholt sich ja nichts.
Ja, aber Matlab will natürlich schon wissen, wie die zwei Anweisungen zu verwerten sind ("und", "oder", ...). Ausführlich findest du es unter Logical Operators, aber ich nehme gleich vorweg: Verwendet am Besten die "Short Circuit Operators", also "&&" für "und" und "||" für oder:
.. wird ausgeführt, wenn beide Bedingungen zutreffen (die zweite wird aber nur überprüft, wenn die erste stimmt).
.. wird ausgeführt, wenn mindestens eine der beiden Bedingungen zutreffen (die zweite wird nur überprüft, wenn die erste nicht stimmt). Alles andere hast du dir bereits selbst beantwortet, oder? Wenn nicht, nochmal fragen. air |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|