|
|
Gradientenbetrag einer Matrix |
|
Harp |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 26.01.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2012, 15:47
Titel: Gradientenbetrag einer Matrix
|
|
Hallo,
ich habe eine Matrix, deren Elemente eine skalare Funktion darstellen. Die explizite Funktionsgleichung habe ich nicht!
Ich muss nun den Betrag des Gradienten dieser skalaren Funktion berechnen.
Ich habe mir überlegt, dass ich die Richtungsableitung in x und y-Richtung bilde und dann den Betrag der Wurzel der Quadrate dieser Richtungsableitungen bilde.
Also:
Ergebniss(i,j) = Betrag( Wurzel( FX(i,j)^2 + FY(i,j)^2 ) )
Ersten Teil bekomme ich mit der Funktion "gradient" hin:
Aber wie schaffe ich es nun, die einzelnen Elemente der Matrix zu quadrieren und die wurzel daraus zu ziehen?
Oder gibt es einen coolen Matlab Befehl, der alles auf einmal erledigt?
Vielen Dank im Voraus!!
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 27.06.2012, 15:30
Titel: Re: Gradientenbetrag einer Matrix
|
|
Hallo Harp,
Ich stelle mir als Fläche ein Quadrat vor, welches entlang der Diagonalen gekippt ist. Die Berechnung des Gradienten in X und Y-Richtung ergibt dann jeweils zu kleine Werte. Der Betrag der Wurzel der Summe der Quadrate liegt da an den exakten Werten nicht deutlich näher dran.
Gruß, Jan
|
|
|
Harp |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 26.01.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.06.2012, 10:01
Titel:
|
|
|
|
|
Hallo Jan,
erstmal vielen Dank für deine Antwort.
Leider ist sie nicht gerade das, was ich mir erhofft habe.
Das die von mir angewandete Methode nicht sehr genau ist, ist mir bewusst. Im konkreten Fall geht es jedoch um einen Verlauf vom Wert 0 zu 1 über eine entsprechende Geometrie, mit nur kleinen Werteänderungen. Also die von dir beschriebene Kante wird nicht auftreten.
Aus dem von mir genutzten Simulationsprogramm erhalte ich eben nur die disktreten Werte an den entsprechenden Koordinaten und keine Funktionsgleichung. Aufgrund der vorgegebenen Geometrie (Abfall von 1 auf 0 wird auf bestimmte Bereiche begrenzt) sehe ich auch keine große Hoffnung, die erhaltenen Werte mit einer Funktion anzufitten und dann den Gradienten zu berechnen.
Zurück zum Problem. Ich habe natürlich weiter gesucht und gefunden, dass Matlab, Matrizen mit .* elementweise multipliziert. Folglich habe ich bis jetzt mein Problem so angegangen:
Soweit ich das in einem Minimalbeispiel beurteilen konnte, funktioniert das auch wie gedacht. Jetzt suche ich nur noch nach einem Befehl, mit welchem man alle Elemente , welche einen gewissen Schwellenwert überschreiten, auf 0 setzen kann, da am Übergang von den Werten mit 1 zu Bereichen außerhalb des Wertebereichs ein Sprung von 1 auf 0 auftritt, da die nicht definierten Bereiche auch mit 0 in der Matrix stehen. Und dann der erhaltene Gradient viel stärker ist als der langsame Abfall von 1 auf 0.
Ich hoffe, dass ist jetzt nicht zu verwirrent. Bei Bedarf, kann ich auch eine Datei mitschicken.
Viele Grrüße
Harp
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|