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

Matritzen subtrahieren

 

Marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 10:40     Titel: Matritzen subtrahieren
  Antworten mit Zitat      
Hallo Leute,

habe zwei Matritzen mit unterschiedlicher Zeilenanzahl. Die Matritzen enthalten in den drei Spalten x-,y-,z-Werte. Beide Matritzen enthalten zum Teil gleiche x-,y-Werte, diese stehen aber wild verteilt irgendwo in den jeweiligen Matritzen.

Nun würde ich beide Matritzen gerne dementsprechend subtrahieren, dass genau diese Beiden gleichen x-,y-Werte sich eliminieren. Am Ende soll eine Matrix entstehen, die nur noch die x-,y-,z-Werte enthält, ohen die identischen x-,y-Werte.

Kann mir da jemand weiterhelfen?

Viele Grüsse
MArc


Gauss

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 10:55     Titel: aa
  Antworten mit Zitat      
Hallo,

ein kleines beispiel zum verständnis wäre nicht schlecht.

gruss
 
marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 11:07     Titel:
  Antworten mit Zitat      
1. Matrix:
x y z
1 2 7
2 5 6
2 9 3
4 6 3
9 5 5

2. Matrix:
x y z
9 5 2
6 6 6
4 6 2
2 9 5
1 2 3

mat1 - mat2 =!

x y z
2 5 6
6 6 6
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.06.2010, 11:13     Titel:
  Antworten mit Zitat      
Hallo,

fasse x und y jeweils in Matrizen M1 und M2 zusammen, dann setxor:

Code:
M1 = [
1 2  
2 5  
2 9  
4 6  
9 5 ];
M2 = [9 5  
6 6  
4 6  
2 9  
1 2 ];
setxor(M1, M2, 'rows')

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 12:27     Titel:
  Antworten mit Zitat      
Hallo Harald,

das problem ist, das die korrdinaten zwar in x und y gleich sind aber einen unterschiedlichen z wert haben. die z koordinaten der nicht identischen punkte sollen in die neue tabelle übernommen werden. bei dieser variante hier hab ich am ende ja nur x und y. und würde ich das so mit z machen, würde es nicht funktionieren...

Gruß
Marc
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 30.06.2010, 12:30     Titel:
  Antworten mit Zitat      
aufbauend auf Haralds vorschlag würde ich so machen:
Code:

m1=[1 2 7
2 5 6
2 9 3
4 6 3
9 5 5 ];
m2=[9 5 2
6 6 6
4 6 2
2 9 5
1 2 3];

[c, ia, ib]=setxor(m1(:,[1 2]), m2(:,[1 2]), 'rows');
M=[m1(ia,:);m2(ib,:)];
 


PS: die Funktion setxor kannte ich auch nicht ;)

gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
Marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 13:02     Titel:
  Antworten mit Zitat      
Ihr seid super! Danke Leute!
 
Marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2010, 13:46     Titel:
  Antworten mit Zitat      
Hallo Leute,

neues Problem! Also die Werte aus der Matrix, die subtrahiert wird, sollen nicht in der Ergebnismatrix stehen. also Bsp:

1. Matrix:
x y z
1 2 7
2 5 6
2 9 3
4 6 3
9 5 5

2. Matrix:
x y z
9 5 2
6 6 6
4 6 2
2 9 5
1 2 3

mat1 - mat2 =!

x y z
2 5 6
----------------------------------------------
Gruß
Marc
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.07.2010, 13:51     Titel:
  Antworten mit Zitat      
Hallo,

dasselbe wie vorher mit SETDIFF statt SETXOR.

Hinweis: wenn ein Befehl in etwa das macht, was man möchte, aber nicht genau das, dann hilft oft ein Blick in die "See Also"-Liste ganz unten in der Dokumentation.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2010, 14:06     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für den Hinweis.
Wenn ich statt "setxor" "setdiff" nehme, bekomme ich folgende Fehlermeldung:

??? Error using ==> setdiff
Too many output arguments.

Gruß
Marc
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.07.2010, 14:14     Titel:
  Antworten mit Zitat      
Hallo,

Es werden von setdiff nur 2 Argumente zurückgegeben, weil man ja nur die Zeilen wissen muss und wo sie in der ersten Matrix stehen. Irgendwo logisch, oder? Anpassung von Fourier's Code:

Code:
[c, ia]=setdiff(m1(:,[1 2]), m2(:,[1 2]), 'rows');
M=m1(ia,:)


Ein Blick in die Hilfe hätte wohl gereicht, um das herauszufinden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Marc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2010, 14:19     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die schnelle Hilfe. Was einem Geübten recht logisch erscheint, gleicht für einen Anfänger oft der chinesischen Sprache, insofern er kein Chinese ist...
Gruß

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