www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - 3D Darstellung aus Punkten
3D Darstellung aus Punkten < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

3D Darstellung aus Punkten: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:38 Mo 27.11.2006
Autor: CAS

Hallo Helfer ;-) ....

Mein Problem:

habe eine Exceltabelle vorliegen mit X Y Z Koordinaten (ca. 200 Punkte) , diese Werte soll ich in Matlab einlesen und die Punkte grafisch darstellen (am besten als Punktwolke).

Da ich leider keine richtige Ahnung von der Problematik (Einlesen + Darstellen)  habe , brauche ich jetzt dringend Hilfe.

Danke schonmal dafür :-) ...

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.



        
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:24 Mo 27.11.2006
Autor: Martin243

Hallo,

ist das eine "richtige" XLS-Datei oder "nur" eine CSV-Datei?


Gruß
Martin

Bezug
                
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 08:23 Di 28.11.2006
Autor: CAS

Hallo....

ist eine "richtige" xls.-Datei.... ;-)

LG  

Bezug
        
Bezug
3D Darstellung aus Punkten: Antwort
Status: (Antwort) fertig Status 
Datum: 13:15 Di 28.11.2006
Autor: Martin243

Hallo,

eine "richtige" XLS-Datei kannst du ganz simpel importieren:

data = xlsread('Dateiname.xls');
Hier werden die Daten der ersten Tabelle dieser Datei in der Matrix data abgelegt.

Falls diese Datei mehrere Tabellen enthält, kannst du auch Folgendes machen:
data = xlsread('Dateiname.xls','Tabellenname');

Die Darstellung geschieht mittels plot3()-Funktion. Das kann man alles in eine Zeile schreiben, aber Schritt für Schritt geht das so:
xd = data(1:end,1); %x-Koordinaten extrahieren
yd = data(1:end,2); %y-Koordinaten extrahieren
zd = data(1:end,3); %z-Koordinaten extrahieren
plot3(xd,yd,zd,'.r'); %r=Rot, .=Darstellung als Punkt (sonst per Linie verbunden!)

Ich hoffe, als Einstieg reicht das.


Gruß
Martin

Bezug
                
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:08 Di 28.11.2006
Autor: CAS

Hallo...

hab das mal so notiert, aber leider kommt bei mir gleich der Fehler:

"
??? Index exceeds matrix dimensions.

Error in ==> einlesen at 3
xd = data(1:end,1); %x-Koordinaten extrahieren" :-(

Kannst du mir das erklären was dieser Ausdruck " xd = data(1:end,1);" im Einzelnen genau bedeutet?

LG Kathi



Bezug
                        
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:51 Di 28.11.2006
Autor: Martin243

Hallo,

kann es sein, dass deine data-Matrix leer ist. Ich nehme an, du hast die Zeilen in eine .m-Datei eingefügt. Da muss aber auf jeden Fall der xlsread-Befehl davorstehen, der der Matrix data den Datensatz aus deiner Datei zuweist.

xd = data(1:end,1);
Was der Ausdruck bedeutet:
Wir legen uns einen Vektor xd an, der unsere x-Koordinaten enthalten soll.
Die gesamte Datenmatrix wird über zwei Indizes angesprochen (in Matrix-Manier zuerst Zeile, dann Spalte).
Also ergibt data(4,2) das Element in der 4. Zeile und 2. Spalte.

Nun gibt es einige "Sonderindizes", die einen schnellen Zugriff auf ganze Teilmatrizen erlauben.
data(2:4,2:3) ergibt die Teilmatrix 2. bis 4. Zeile, 2. bis 3. Spalte.
data(5:end,1) ergibt die gesamte erste Spalte bis auf die ersten vier Elemente.

Also liest man mit data(1:end,1) die komplette erste Spalte der Matrix data aus, wo ich die x-Koordinaten vermutet habe.


Gruß
Martin
data()

Bezug
                                
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:34 Mi 29.11.2006
Autor: CAS

Hallo Martin... mein Helfer in der Not,

Um ganz sicher zu sein, schicke ich dir das nochmal. Eingegeben habe ich also :

----------------------------------------------------------------
data = xlsread('x.xls');

xd = data(1:end,1); %x-Koordinaten
yd = data(1:end,2); %y-Koordinaten
zd = data(1:end,3); %z-Koordinaten

plot3(xd,yd,zd,'.r');

-----------------------------------------------------------------

und aus Sicherheitsgründen, habe ich die xls-datei auch noch angehängt....

Muss ich vorher noch was festlegen oder warum meckert mein Programm immer?

Grüße aus DD

[a][Dateianhang Nr. 1 (fehlt/gelöscht)]

Bezug
                                        
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:21 Mi 29.11.2006
Autor: Martin243

Hallo,

ich verstehe es nicht! Ich habe die Datei gespeichert, deine Eingabe per Copy&Paste übertragen und bekomme:

[Dateianhang nicht öffentlich]

Kannst du mal die Semikolons hinter den Funktionsaufrufen weglassen? Am besten Stück für Stück. Schau dann mal, welche Werte data, xd, yd und zd annehmen.
Sonst bin ich im Moment ratlos.[verwirrt]


Gruß
Martin

Dateianhänge:
Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
Bezug
                                                
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:42 Mi 29.11.2006
Autor: CAS

Ich glaube mein Matlabprogramm (Studentenversion) spinnt manchmal, nach nochmaligen eintippen funktionierte es.... ich danke dir ;-)

Und da ich ne kleine Nervensäge bin, habe ich schon wieder ne Frage, hat diesmal was mit "switch case & Co" zu tun.

aber dazu erstell ich mal eine neue Frage  ;-)

also ich danke dir!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Bezug
                
Bezug
3D Darstellung aus Punkten: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 07:37 Fr 01.12.2006
Autor: CAS

hallo nochmal ;-)....

wenn ich jetzt diese 3d-Punkte als Fläche sehe, bzw. als Körper, und jetzt noch eine Funktion darüberlegen möchte (einfache Addition quasi) wie muss ich da die Punkte bestimmen, bzw. geht das überhaupt, oder muss ich aus diesen Punkten eine andere Funktion erstellen?

LG

Bezug
                        
Bezug
3D Darstellung aus Punkten: Antwort
Status: (Antwort) fertig Status 
Datum: 11:42 Fr 01.12.2006
Autor: Martin243

Hallo,

wenn du zu deinen Daten noch etwas dazuaddieren möchtest, dann kannst du das direkt machen, z.B.:

zd_neu = zd + sin(xd.*yd);

Beachte, dass die Addition (wie bei Matrizen) elementweise abläuft, für die elementweise Multiplikation aber ein Punkt vor dem Malzeichen stehen muss!

Du kannst natürlich auch vorher den anderen Summanden berechnen:
zd2 = sin(xd.*yd);
zd_new = zd + zd2;


Gruß
Martin

Bezug
                                
Bezug
3D Darstellung aus Punkten: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 10:31 Di 12.12.2006
Autor: CAS

Hallo..... ;o)

habe noch mal eine Frage zu einer Darstellungsweise....

Habe einen 3d Körper (X, Y, Z) und jetzt will ich ein Quadrat (a,b,c) darüber legen. Soll dann später einen Bereich aus der Sicht (x,y) darstellen.

Mein Problem liegt jetzt beim Ausplotten:
Meine Schreibweise: ************************************

.....

figure

   plot3(a,b,c);  
   surf(X, Y, Z);
*****************************************************
da wird aber nur (X,Y,Z) geplottet, wie bekomme ich nu die 2 "Grafiken" in ein Koordinatensystem unter.

LG
[a][Dateianhang Nr. 1 (fehlt/gelöscht)]

Bezug
                                        
Bezug
3D Darstellung aus Punkten: Antwort
Status: (Antwort) fertig Status 
Datum: 10:47 Di 12.12.2006
Autor: Hugo_Sanchez-Vicario

Hallo CAS,

dieses Problem tritt schon dann auf, wenn du versuchst, zwei Funktionen in ein Bild zu zeichnen, z.B. mit dem kurzen Programm
x=[0:pi/100:2*pi];
figure(1);
plot(x,sin(x));
plot(x,cos(x));

Hier hast du die Option, statt der beiden Plotbefehle
plot(x,sin(x),x,cos(x));
zu schreiben, aber das geht in deinem Fall nicht.

Du kann aber MATLAB anweisen, den alten Bildinhalt nicht zu ueberschreiben, indem du 'hold on' sagst, also im ersten Programm
x=[0:pi/100:2*pi];
figure(1);
hold on;
plot(x,sin(x));
plot(x,cos(x));
schreibst. So kannst du nacheinander verschiedene Grafikobjekte in dasselbe Bild zeichnen lassen.

Bezug
                                                
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:23 Di 12.12.2006
Autor: CAS

Klappt wunderbar... dank dir dafür.....

LG Kathi

Bezug
                                                
Bezug
3D Darstellung aus Punkten: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 10:45 Fr 15.12.2006
Autor: CAS

Hallo nochmal....

habe noch mal eine Frage zur Darstellung.

Die Punkte sollen als "Körper" dargestellt werden.... aber wenn ich Sie mir jetzt mit dem Befehl "plot3" ausgeben lasse, entsteht nur eine Punktwolke,
besser wäre es mit dem Befehl "surf", aber dies funktioniert nicht.

Wie kann ich mein Problem lösen?

[hab die Datei mal angehängt]
[a]Datei-Anhang



Dateianhänge:
Anhang Nr. 1 (Typ: xls) [nicht öffentlich]
Bezug
                                                        
Bezug
3D Darstellung aus Punkten: Antwort
Status: (Antwort) fertig Status 
Datum: 11:25 Fr 15.12.2006
Autor: Martin243

Hallo,

wenn man weiß, wie groß das Gitter in deiner XLS-Datei ist, dann kann man es so versuchen:
data = xlsread('x.xls');
surf(reshape(data(:,1),61,63),reshape(data(:,2),61,63),reshape(data(:,3),61,63));
Hier sieht man in dem Plot noch einen hässlichen Sprung zwischen den positiven und den negativen x-Werten.

Wenn man auch dieses Problem beheben möchte, muss man die Daten noch nach den x-Koordinaten sortieren:
[st, ind] = sort(data,1);
surf(reshape(data(ind(:,1),1),61,63),reshape(data(ind(:,1),2),61,63),reshape(data(ind(:,1),3),61,63));
[Dateianhang nicht öffentlich]
Das kleine Loch in dem Plot ist wohl auf fehlerhafte Daten zurückzuführen.


Gruß
Martin

Dateianhänge:
Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
Bezug
                                                                
Bezug
3D Darstellung aus Punkten: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:57 Fr 15.12.2006
Autor: CAS

klappt mal wieder..... danke ....

aber kannst du mir den Ausdruck:

surf(reshape(data(ind(:,1),1),61,63),reshape(data(ind(:,1),2),61,63),reshape(data(ind(:,1),3),61,63));

mal etwas näher erklären?

Meine eigentliche Exceltabelle umfasst 8000 Punkte und ich weis nicht ganz, was du meinst mit der Größe des Gitters in der XLS-Datei?

LG

Bezug
                                                                        
Bezug
3D Darstellung aus Punkten: Antwort
Status: (Antwort) fertig Status 
Datum: 14:15 Fr 15.12.2006
Autor: Martin243

Hallo,

die Tabelle, die du zuletzt mitgeliefert hattest, umfasste 3843 Punkte, die ein xy-Gitter von der Größe 61x63 beschrieben.
Also ging es darum, zuerst die x-Werte aufsteigend zu sortieren. Die Indizes der ursprünglichen Reihenfolge gab und de Funktion sort in dem Vektor ind zurück.
Da wir nach den x-Werten sortiert haben, interessiert uns nun nur die Indizes in ind(:,1).
Somit können wir auf die sortierten x-Wert zugreifen per data(ind(:,1),1),
auf die entsprechenden y-Werte per data(ind(:,1),2) und
auf die entsprechenden z-Werte per data(ind(:,1),3).

Die Funktion reshape macht aus den langen Vektoren mit 3843 Elementen Matrizen der Größe 61x63.
Du kannst dir mal die Hilfe zu surf ansehen, insbesondere für den Fall, dass X, Y und Z MATRIZEN sind.

Obiges funktioniert nur, weil die Annahme, dass deine XLS-Datei (bzw. die ersten beiden Spalten davon) ein Gitter beschreibt, stimmt. Sollte deine tatsächliche Datei ganz anders sein, dann müssten wir vielleicht umdenken.


Gruß
Martin

Bezug
                                                                                
Bezug
3D Darstellung aus Punkten: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 08:04 Mo 18.12.2006
Autor: CAS

... eigentlich ist sie nicht anders. Umfasst statt den 3843 Punkte 7686.

Man könnte doch jetzt sagen dass es ein XY- Gitter von 61x126 beschreibt, oder liege ich da falsch?

Wenn man das nämlich jetzt so wie oben schreibt mit reshape, zeigt es mir immer wieder einen Fehler an....

Woran liegt das?

[a]Datei-Anhang

Dateianhänge:
Anhang Nr. 1 (Typ: xls) [nicht öffentlich]
Bezug
                                                                                        
Bezug
3D Darstellung aus Punkten: Antwort
Status: (Antwort) fertig Status 
Datum: 11:14 Mo 18.12.2006
Autor: Martin243

Hallo,

Excel und Matlab sagen aber beide, dass es nur 7873 Punkte sind. Da sind wohl ein paar zuviel...

Aaah, jetzt sehe ich es:
Das Gitter soll 61 * 125 Punkte groß sein und die Daten mit x= 29, 24, 22 und 21 sind doppelt. Werden die doppelten Daten gelöscht, kommen wir auf 7625 Punkte = 61*125.


Gruß
Martin

Bezug
                                                                                                
Bezug
3D Darstellung aus Punkten: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:34 Mo 18.12.2006
Autor: CAS

...
hab das jetzt mal mit 61x125 genommen, doch leider kommt immernoch ein Fehler:

??? Error using ==> reshape
To RESHAPE the number of elements must not change.

Wo steckt da mein Fehler? Oder muss ich die Punkte doch auf andere Weise darstellen?

Bezug
                                                                                                        
Bezug
3D Darstellung aus Punkten: Antwort
Status: (Antwort) fertig Status 
Datum: 14:42 Mo 18.12.2006
Autor: Martin243

Moooment mal!
Vorher musst du natürlich deine Excel-Datei korrigieren. Schau mal genau hinein und lösche die doppelten Einträge (s.o.)
Erst, wenn die Datei genau die erforderliche Zeilenanzahl hat, funktioniert das reshape!


Gruß
Martin

Bezug
                                                                                                                
Bezug
3D Darstellung aus Punkten: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:27 Mo 18.12.2006
Autor: CAS

Vielleicht sollte ich doch mal gründlicher lesen ;-)
...
Klappt.... mal weider :-)

::::DANKESCHÖN:::

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de