WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

3dplot

 

Martin3d

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2008, 13:51     Titel: 3dplot
  Antworten mit Zitat      
Hallo, ich habe Daten in folgender Weise in Excel vorliegen: (Erste Spalte mit 9 Zeilen einer 5 Spalten und 9 Zeilen Matrix)

X Y Z
Subject:A1 277658430 209464365 684850785
Subject:A2 286476484 236948537 628937289
Subject:A3 294095977 248572373 570287542
Subject:A4 294692757 237229041 503504727
Subject:A5 297950209 225090934 449594421
Subject:A6 301862723 208823879 387677212
Subject:A7 298973191 198297090 330981492
Subject:A8 299979486 201688070 270278869
Subject:A9 301833729 217310592 212191665

...

es folgen noch die Daten für Subject:B1-B9... Subject D1-D9. Diese Daten liegen jeweils in den nächsten Spalten.

Ist es möglich diese Daten als 3D Fläche zu plotten? Leider scheitert es bei mir schon mit dem richtigen importieren der Daten, geschweigen denn an einen Plot zu denken.

Ich wäre über jeden Tipp und jede Anregung sehr dankbar

Martin


Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 11.02.2008, 14:03     Titel:
  Antworten mit Zitat      
Hallo Martin 3d,

schau dir mal die Funktionen

xlsread

an. Damit kannst du dein File lesen und die Daten importieren.

und mesh


zum ploten der Daten
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin3d

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2008, 14:25     Titel:
  Antworten mit Zitat      
Hallo Nyquist,

leider komme ich mit dem Befehl xlsread nicht zurecht. Aber ich habe versucht mit der allgem. import funktion die daten einzulesen. das klappt wohl ganz gut. zwar noch nicht mit der ganzen datei aber ich wollte nur mal die ersten 9 punkte (=1 spalte) darstellen, rein als punkte.


nun meine frage, mit welchem befehl plote ich diese punkte. plot und mesh führen hier leider nicht zum ergebniss.
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 11.02.2008, 15:09     Titel:
  Antworten mit Zitat      
kommt darauf an über was du diese Punkte ploten willst sind das schon xyz Koordinaten

Mit meshgrid erzeugt man sich die Vektoren x, y und z

[X,Y,Z]=meshgrid(1:100);

und dann kommt es ganz darauf an in welcher weise du deine Punkte plotten willst.

da gibt es
surf
scatter
plot3
...

schau mal in der Matlab Hilfe nach da findest du einiges über 3d-Plot
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin3d

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2008, 15:32     Titel:
  Antworten mit Zitat      
Die Matlab Hilfe hab ich schon konsultiert, aber damit komme ich nicht wirklich weiter.

Die Koordinaten sind bereits die x,y,z Werte. Ich hätte einfach gerne ein Bild, in dem die 45 Punkte auch als Punkte dargestellt sind über die 3 Achsen geplotet.

Die Fläche ist der menschliche Rücken.

In einem weiteren Schritt wäre es dann schön das als komplette Fläche dargestellt zu haben, aber ich scheiter schon an dem simplen Problem Sad
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 11.02.2008, 17:59     Titel:
  Antworten mit Zitat      
HalloMartin 3d,

das sollte dir helfen

x y z ist ein Vektor der die jeweiligen Koordinaten enthält
Code:

x = ();
y = ();
z = ();

plot3(x,y,z), grid on
 

du kannst deinen plot auch noch beschriften
Code:

xlabel(’...'), ylabel('...'),zlabel(’...’)

title(’\it{Beispiel}’,’FontSize’,14)
 
Very Happy Very Happy
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
WarDummUndRauchteDasGeld

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.03.2008, 09:46     Titel:
  Antworten mit Zitat      
danke Nyquist hast mir geholfen,
habe nun noch eine frage, kann ich auch eine zweite linie in der gleichen darstellung darstellen?
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 31.03.2008, 10:12     Titel:
  Antworten mit Zitat      
Hi,

das geht, indem Du vor oder nach dem ersten plot-Befehl
Code:
schreibst. Nachfolgende plot-Befehle werden dann im gleichen Bild ausgeführt. Mit
Code:
hebst Du das wieder auf.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
standortpfarrer
Forum-Anfänger

Forum-Anfänger



Beiträge: 11
Anmeldedatum: 31.03.08
Wohnort: ---
Version: 7.1.0.246 SP3
     Beitrag Verfasst am: 31.03.2008, 10:54     Titel:
  Antworten mit Zitat      
danke nschlange, dit ging ja schnell nun bin ich auch angemeldet.
das mit dem hold on funzt ja super. matlab könnte mir gefallen.
nun meine nächste frage:
kann ich nun auch die farbe der zweiten linie ändern?
wahrscheinlich sind das voll die dummern fragen, aber ich finde in der doku nix, wahrscheilich suche ich wieder an der falschen stelle.
danke
Private Nachricht senden Benutzer-Profile anzeigen
 
standortpfarrer
Forum-Anfänger

Forum-Anfänger



Beiträge: 11
Anmeldedatum: 31.03.08
Wohnort: ---
Version: 7.1.0.246 SP3
     Beitrag Verfasst am: 31.03.2008, 10:57     Titel:
  Antworten mit Zitat      
nachschlag, also in dem View kann ich die Farbe ja einfach ändern. Aber wie im code?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 31.03.2008, 11:00     Titel:
  Antworten mit Zitat      
Naja, Du weißt ja, was man von dummen Fragen sagt... Wink

Guck in der Hilfe mal nach LineSpec, man kann neben der Farbe noch anderes wie Linienart und Marker einstellen.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
standortpfarrer
Forum-Anfänger

Forum-Anfänger



Beiträge: 11
Anmeldedatum: 31.03.08
Wohnort: ---
Version: 7.1.0.246 SP3
     Beitrag Verfasst am: 31.03.2008, 11:25     Titel:
  Antworten mit Zitat      
super danke,
läuft alles in meinem test, nur leider nicht mit den originaldaten.
vergleiche nun seit ner viertel stunde die beiden codes,
sehe aber nciht den logischen unterschied:
dieser läuft:

clear; close all;

C = [40 50 80]
D = [50 60 80]
E = [80 90 30]
F = [70 80 90]
G = [50 60 30]
H = [10 20 30]
A313 = [24 12.4000082 -101.6357844]

plot3(C,D,E,'r'), grid on, hold on,
plot3(F,G,A313)
pause

dieser aber nicht, hab ich zuviele punkte?
clear; close all;

A11 = [24 12.4000082 -101.6357844]
A12 = [36 34.99131775 140.1613433]
A13 = [42 37.69496536 251.0758566]
A14 = [47 38.27928162 316.7176272]
A15 = [63 51.41078568 429.9110552]
A16 = [71 51.72645187 487.0940729]
A17 = [79 46.7849617 525.7137736]
A18 = [87 38.580513 546.1795216]
A19 = [95 29.20894814 550.6054322]
A20 = [103 15.57538223 537.0468803]
A21 = [24 12.4000082 -101.6339387]
A22 = [39 38.21752548 183.76441]
A23 = [50 48.24598694 352.5914278]
A24 = [60 60.12969589 448.4976455]
A25 = [70 70.28065491 510.5386825]
A26 = [76 75.75331116 537.1151319]
A27 = [81 41.20856857 550.5232094]
A28 = [86 17.68595695 546.3304878]

plot3(A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,'g'), grid on, hold on,
plot3(A21,A22,A23,A24,A25,A26,A27,A28,'r')
pause

und das ist die fehlermeldung bzw. die fehlermeldungen:
??? Error using ==> plot3
String argument is an unknown option.

Error in ==> W20080328Phil3D at 22
plot3(A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,'g'), grid on, hold on,
Private Nachricht senden Benutzer-Profile anzeigen
 
standortpfarrer
Forum-Anfänger

Forum-Anfänger



Beiträge: 11
Anmeldedatum: 31.03.08
Wohnort: ---
Version: 7.1.0.246 SP3
     Beitrag Verfasst am: 31.03.2008, 11:39     Titel:
  Antworten mit Zitat      
also wenn ich wirklich nur jeweils drei punkte nehme klappt es. bedeutet das nun das ich nur linien mit max. 3 punkten einbinden kann? nee, das kann ja nciht sein, oder doch?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 31.03.2008, 11:44     Titel:
  Antworten mit Zitat      
standortpfarrer hat Folgendes geschrieben:


plot3(A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,'g'), grid on, hold on,
plot3(A21,A22,A23,A24,A25,A26,A27,A28,'r')
pause

und das ist die fehlermeldung bzw. die fehlermeldungen:
??? Error using ==> plot3
String argument is an unknown option.

Error in ==> W20080328Phil3D at 22
plot3(A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,'g'), grid on, hold on,


Plot3 erwartet als Eingabe immer Tripel von Koordinaten, also zb x1 y1 z1, x2 y2 z2 ...
Du hast oben aber x4 = A20, y4 = 'g' und z4 = nix. Das geht nicht.
Schreib statt dessen mal
Code:

M1=[A11;A12;A13;A14;A15;A16;A17;A18;A19;A20]
plot3(M1(:,1),M1(:,2),M1(:,3),'g')
grid on; hold on;
M2=[A21;A22;A23;A24;A25;A26;A27;A28]
plot3(M2(:,1),M2(:,2),M2(:,3),'r')

Damit werden die Punkte A untereinander in zwei Matrizen geschrieben, x in der ersten Spalte, y in der 2. und z in der 3.
Die einzelnen Spalten kann man dann plotten.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 31.03.2008, 11:57     Titel:
  Antworten mit Zitat      
Zur Ergänzung, weil es wohl nicht ganz klar geworden ist:

Wenn Du z.b. schreibst
Code:
plot3(A11,A12,A13)

werden die Einträge von A11 als x-Werte, die von A12 als y-Werte und die von A13 als z-Werte genommen (die müssen alle gleich viele Einträge haben) Bei Dir haben die 3 Einträge, deshalb werden 3 Punkt geplottet.
Ich denke aber nicht, dass Du das so haben willst.
Wenn ich richtig vermute musst Du schreiben:
Code:
plot3(A11(1),A11(2),A11(3),A12(1),A12(2),A12(3),A13(1),A13(2),A13(3);

Jetzt werden wieder 3 Punkte geplottet (aber andere), weil A11(1) als x-Koordinate des 1. Punktes, A11(2) als y- und A11(3) als z-Koordinate genommen werden. A12(1) ... sind entsprechend die Koordinaten des zweiten Punktes.
Ich hoffe, der Unterschied wird so deutlich...

PS: Schreib doch bitte zukünftig Deinen Matlab-Code im Posting in die dafür vorgesehene Umgebung. Oben auf 'Code' klicken
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.