|
HubiHH |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2009, 12:44
Titel: f(x,y) in 3 D darstellen
|
|
Hallo Forumsmitglieder,
ich stehe vor dem Problem eine Funktion f(x,y) als 3D Graphik zu plotten.
Es handelt sich um einen zweidimensionalen (Kerndichte-) Schätzer aus der Statistik, mithilfe dem ich eine Dichtefunktion f(x,y) darstellen möchte.
Eingangsvektor xi und yi sind die gemessenen Rohdaten, n die Stichprobengröße und h1 bzw. h2 die sog. Bandbreite, mit der die Dichtefunktion angepasst werden kann.
Ich hoffe, die folgende Darstellung der Funktion ist verständlich, bzw. vorab eigentlich die Frage: Wie stelle ich in Matlab eine mathematische Reihe bzw. Folge dar?
f(x,y)= 1/n * ((Reihe über i=1 bis n) * (1/h1) * K(u1) * (1/h2) * K(u2))
K ist dabei ein Kern, z.B. Gauss: (1/Wurzel(2*pi)) * exp((-1)*((u1 oder u2)²/2))
mit u entsprechend
u1 = (x-xi)/h1
u2 = (y-yi)/h2
Das Plotten müsste dann erfolgen über:
Freue mich sehr auf vielleicht ein paar Anregungen! Vielen Dank!
|
|
|
|
|
derOli |
Forum-Meister
|
|
Beiträge: 579
|
|
|
|
Anmeldedatum: 19.03.08
|
|
|
|
Wohnort: Leipzig
|
|
|
|
Version: 2010a
|
|
|
|
|
|
Verfasst am: 30.04.2009, 18:47
Titel:
|
|
Hi,
vielleicht hilft dir, das Z eine Matrix sein sollte, mit deinen Erhebungswerten, das heißt du solltest eine Matrix f(x,y) erzeugen. Am einfachsten geht das mit 2 For-Schleifen allerdings ist das nicht so performant, besser wäre es ohne Schleifen mit Vektor und Matrixen Manipulationen.
Hilft das schon?
Grüße,
der Oli
|
|
|
HubiHH |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.05.2009, 15:36
Titel:
|
|
Hallo Forumsmitglieder,
nun habe ich noch mal einen verständlicheren und einfacheren Code angegeben, da mir bei meinem bereits gelöschten Code doch einige Fehler aufgefallen sind. Hoffentlich sind diese nun bereinigt.
Meine ganz konkrete Frage: Wie weise ich in der dritten Schleife den ermittelten Wert dem entsprechenden Ort (Z=f(x,y)) zu? In meinem code wäre das die Stelle Z=[x,C]. Irgendtewas ist daran falsch: Kann mir einer helfen? Vielen Dank!
|
|
|
Lucia |
Forum-Fortgeschrittener
|
|
Beiträge: 55
|
|
|
|
Anmeldedatum: 19.03.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2008b
|
|
|
|
|
|
Verfasst am: 04.05.2009, 16:10
Titel:
|
|
Hi,
da sind mir ein paar Dinge nicht so klar. Dieses j wird nie verwendet, also wieso nicht gleich:
(A und B sind auch keine Vektoren im angegebenen Code). Dann weist
N den Wert 1 zu, ist hier nicht eher einfach
In der innersten Schleife stimmt auch was nicht. l1 und l2 sind so keine Vektoren, sondern nur Zahlwerte (für das jeweilige i). Also entweder die innerste Schleife vektorisieren und weglassen -- also xi statt xi(i) etc. (besser), oder sowas wie
verwenden.
Die Zuweisung an Z sollte vermutlich so aussehen:
Das dann aber nach der innersten Schleife, oder? Ich hoffe, das ist alles halbwegs verständlich...
Viele Grüße, Lucia
|
|
|
HubiHH |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.05.2009, 17:30
Titel:
|
|
Hallo Lucia,
super, vielen Dank! Bei der Einarbeitung Deiner Vorschläge, sind mir noch ein paar weitere Fehler aufgefallen - das kommt wahrscheinlich davon, wenn man laufend Veränderungen macht, bzw. neue Ansätze testet. Anbei der funktionierende Code:
Viele Grüße, HubiHH
|
|
|
HubiHH |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.05.2009, 10:36
Titel:
|
|
Ein Problem tut sich doch noch auf:
Mit dem Code einen Beitrag höher erzeuge ich eine 32x125 Matrix Z.
Mit folgendem Code erzeuge ich die Koordinatenmatrizen.
Allerdings habe ich dann X=(125,32) und Y=(125,32). Müssten die nicht X=(32,125) und Y=(32,125) sein? Da mein x-Vektor die Länge 32 hat und mein Y-Vektor 125?
Ich werde das Gefühl nicht los, dass sich hier ein Fehler eingeschlichen hat, auch kann ich aus dem Bild leider noch nicht ganz genau erkennen, ob es sich um einen Fehler handelt?
Kann mir einer zur Seite springen? Vielen Dank!
|
|
|
Maddy |
Ehrenmitglied
|
|
Beiträge: 494
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: Greifswald
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.05.2009, 10:57
Titel:
|
|
Da der erste Eintrag bei der Indizierung die Zeilen (also y-Richtung) und der zweite die Spalten (also x-Ricthugn) bezeichnet, müsste die Zuweisung in der Schleife wahrscheinlich
heißen.
_________________
>> why
The computer did it.
|
|
|
HubiHH |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.05.2009, 11:02
Titel:
|
|
Danke, aber das erzeugt dann eine 125x125 Matrix Z.
|
|
|
Maddy |
Ehrenmitglied
|
|
Beiträge: 494
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: Greifswald
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.05.2009, 11:34
Titel:
|
|
Du musst halt die Vor-Definition im oberen Bereich auch umkehren.
In etwa so:
Anmerkung: vll baust du am Anfang des Skripts zusätzlich ein clear all (Löschen aller Variablen) ein um Überschneidungen beim mehrfachen ausführen zu vermeiden.
_________________
>> why
The computer did it.
|
|
|
HubiHH |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 02.10.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.05.2009, 13:13
Titel:
|
|
|
|
|
|
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 - 2025
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.
|
|