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

X, Y und Z Koordinaten mit jeweiligem Wert eingeben/Plotten

 

RikonVan
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2013, 13:45     Titel: X, Y und Z Koordinaten mit jeweiligem Wert eingeben/Plotten
  Antworten mit Zitat      
Sehr geehrter Leser dieses posts,

ich habe ein denke ich leichtes Problem für erfahrene Matlabber:

Ich bin im besitz einer Tabelle mit X, Y und Z Koordinaten incl. zugehöriger Wert:
Auszug:

147 100 45 5.41933
146 99 46 5.78699
147 99 46 6.49982
148 99 46 6.08627
146 100 46 6.64501
147 100 46 7.2801
148 100 46 6.57382
146 101 46 6.7415
147 101 46 7.18269
148 101 46 6.20148
146 102 46 5.97855
147 102 46 6.32466
147 99 47 6.0872

Links der X, dann der Y und schließlich der Z Wert, am Ende eine Intensität(die Zahl mit dem Punkt)

Ich würde gerne diese Punkte graphisch in eine dreidimensionale Form bringen, also z.b. als dreidimensionale Funktion eingeben.

Die Intensität kann, wenn es zu schwierig wird, auch vernachlässigt, also einfach weggelassen werden!

Vielen Dank für eure Hilfe, falls ihr wisst, wie es geht.







p.S.: Ich habe noch eine zweite Tabelle, mit vergleichbaren Werten. Nun würde ich gerne die Differenz der beiden Tabellen darstellen, also wenn beide Tabellen einen Punkt an der selben Stelle aufweisen, soll dieser Punkt dargestellt werden. Sonst nicht. Auch hier kann, wenn zu kompliziert, die Intensität vernachlässigt werden.
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.05.2013, 14:18     Titel:
  Antworten mit Zitat      
Code:
die intensität könnte man zb über die farbe einbauen falls es ums plotten ging. wenn es darum geht eine funktion zu fitten. vieleicht fminsearch oder etwas aus der curvefittingtoolbox
Private Nachricht senden Benutzer-Profile anzeigen
 
RikonVan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2013, 14:22     Titel: Teilantwort
  Antworten mit Zitat      
Ich bin bei weiteren nachforschungen auf folgendes gestoßen:

Wenn die Matrix A Deine Werte spaltenweise enthält:
1: x=A(:,1);
2: y=A(:,2);
3: z=A(:,3);
4: stem3(x,y,z,'LineStyle','none');
Eine Datendifferenz kann man anschließend zwischen Matrix A und Matrix B bilden.

Dazu müsste ich die Werte meiner Tabelle allerdings erstmal in eine Matrix A übertragen.

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
RikonVan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2013, 14:47     Titel:
  Antworten mit Zitat      
Falls es noch jemand anderen interessiert:
Ich habe folgende Fortschritte gemacht:

1. Matrix A einlesen:
Code:
A=load('test.txt')

Die tabelle als txt speichere ich einfach direkt im MATLAB Ordner und kann sie dann wieder laden als z.b. test.txt

2. Matrix B einlesen(s.o.)

Graphisch getrennt kann ich beide nun darstellen(s.o.)

Die Intensität als Farbe werde ich als nächstes ausprobieren und die Differenz. Weiß allerding noch nicht wie Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
RikonVan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2013, 13:31     Titel: Weiterführung
  Antworten mit Zitat      
Mittlerweile habe ich mein Problem gelöst.
1.Ich lade beide Matrizen unterschiedlicher größe aber mit 4 Spalten in die Matrizen A und B mittels load.
2.Ich habe eigens ein Skript geschrieben, um ebendie Zeilen auszugeben, welche nicht gleich sind. Unglaublich, dass so etwas nicht in Matlab gelöst ist, sondern nur das umgekehrte, also intersect. ~intersect funktioniert auch nicht.
Code:
function C = comp(A,B)
C=[];
for i=1:size(A,1)
x=true;
for j=1:size(B,1)
if all(A(i,1:3) == B(j,1:3))
x=false;
end
end
if x
C=[C;A(i,:)]
end
end


3.Darstellung dieser Matrix mittels Scatter3:
X=C(:,1);
Y=C(:,2);
Z=C(:,3);
D=C(:,4); -->Hier kommt die Farbe her!
scatter3(X,Y,Z,20,C,'fill')

Sollte jemand eine bessere Lösung finden, bitte posten Smile Aber das ist schonmal in Ordnung.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 29.05.2013, 13:43     Titel:
  Antworten mit Zitat      
was funktioniert denn an intersect nicht ?
Code:
a=[4,6,5;1,2,3]
b=[2,4,5;1,2,4;4,6,4]
[c,ia,ib]=intersect(a(:,1:2),b(:,1:2),'rows'))

liefert doch das was du brauchst.
Private Nachricht senden Benutzer-Profile anzeigen
 
RikonVan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2013, 14:14     Titel: Intersect
  Antworten mit Zitat      
Lieber Winkow Smile,

ich habe 2 Raumvolumina gegeben. In meiner Auswertung möchte ich deren Unterschiede aufzeigen, was ich am liebsten durch die Differenz der beiden Volumina ausdrücken möchte, nicht durch deren Überschneidung. Intersect liefert mir jedoch nur letzteres, richtig?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 29.05.2013, 14:38     Titel:
  Antworten mit Zitat      
naja deine schleife sucht die werte in A die nicht in B sind. meine finded rauß welche in B sind. du must also quasi dann nur die restlichen nehmen was sich auch druch ein paar zeilen mehr lösen lässt glaub ich
zb
Code:
[~,ia,~]=intersect(A(:,1:3),B(:,1:3),'rows');
C=A;
C(ia(:),:)=nan;
C=reshape(C(~isnan(C)==1),[],4);
Private Nachricht senden Benutzer-Profile anzeigen
 
RikonVan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2013, 17:35     Titel: Danke
  Antworten mit Zitat      
Ja eigentlich hast du recht, dann muss man nur noch die Werte aus A rausnehmen und ne neue Matrix, die dann die Differenz darstellt. Vielen Dank, Du bist ziemlich intelligent!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 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.