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

Löschen bestimmter Kombinationen

 

Simblio
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 17.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2010, 17:16     Titel: Löschen bestimmter Kombinationen
  Antworten mit Zitat      
Hallo,... ich habe ein kleines Problemchen... ich muss alle Kombinationen von 4 Variablen aufstellen. Aber ohne Doppelte!!!
hier mal mein Code:
Code:
zahlt1=2;
zahlt2=3;
zahlt3=2;
zahlt4=3;

t1=(1:1:2)';
c=sort(repmat(t1,(zahlt2*zahlt3*zahlt4),1));

t2=(0:0.5:1)';
d1=sort(repmat(t2,(zahlt3*zahlt4),1));
d=repmat(d1,zahlt1,1);

t3=(1:1:2)';
e1=sort(repmat(t3,zahlt4,1));
e=repmat(e1,zahlt1*zahlt2,1);

t4=(0:0.5:1)';
f=repmat(t4,(zahlt1*zahlt2*zahlt3),1);

Mat=[c d e f];


Nun gibt es in Mat einige Zeilen doppelt. Bsp: 1 0 2 0 und dann gibt es 2 0 1 0 diese Zeilen sind zu viel und müssten gelöscht werden.
Gibt es zufällig dafür irendein Matlab Befehl? Hatte es mit einer Schleife gelöst. Aber bei einer Mat von 200000 Zeilen geht das dann nicht mehr!
Hat dazu jemand eine Idee?
Private Nachricht senden Benutzer-Profile anzeigen


Simblio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 17.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2010, 09:00     Titel:
  Antworten mit Zitat      
hi noch mal bissl anders und einfacher formuliert.
ich habe z.B. folgende Matrix:
Code:
y=[3 2 4 5;4 5 3 2;1 2 2 4;2 5 10 8;10 8 2 5];

Nun sind z.B zeile 1 und 2 identisch. Es spielt keine Rolle, ob 3 2 4 5 oder 4 5 3 2.
In meiner weiteren Rechnung brauche ich nur eine der beiden Zeilen. Kann man mit einem Befehl solche zugehörigen Zeilen finden, da ich diese löschen müsste?
Eine Schleife kommt allerdings wegen der Rechenzeit nicht in Frage!
Vielen Dank!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 18.02.2010, 13:50     Titel:
  Antworten mit Zitat      
Hi, ganz ohne Schleife komme ich nicht aus,

aber mittels perms() sollte es ausreichend schnell gehen:

Code:

y=[3 2 4 5;4 5 3 2;1 2 2 4;2 5 10 8;10 8 2 5];

tst1=zeros(size(y));

k=0;
while k<size(y,1)
    k=k+1;
    tst1=ismember(y,perms(y(k,:)),'rows');
    tst1(k)=0;
    y(tst1,:)=[];
end


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2010, 15:17     Titel:
  Antworten mit Zitat      
Hallo,

falls Dich ein bisschen umsortieren der Werte innerhalb der Zeilen nicht stört, könntest Du auch sowas in der Art machen:
Code:

y=[3 2 4 5;4 5 3 2;1 2 2 4;2 5 10 8;10 8 2 5];
ys = sort(y,2);
ys2 = sortrows(ys);
d = diff(ys2);
z = ys2(any([ones(1,4);d],2),:);
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Simblio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 17.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2010, 17:32     Titel:
  Antworten mit Zitat      
hi
Die Reihnfolge der Zeilen ist echt egal, bloß die Spalten (1 2) und (3 4) dürfen nur als doppelpack getauscht werden, aber vllt hilf mir das auch schon weiter.

Super, die geht schon um einiges schneller die Schleife!! Aber bei einer Größe über 200000 Zeilen müsste ich lange warten....

Aber vllt hat jemand eine Idee wie ich eine Matrix mir erstelle, wo solche doppelten Belegungen erst gar nicht vorkommen.

Hier ein Bsp: habe T1, T2, T3, T4 als Variablen. Für die gelten soll:
T1 & T3=0:1:4 und T2 & T4=3:0.5:5

Jetzt will ich alle Kombinationen aber ohne diesen Doppelten? Also solche Kombinationen wie z.B., T1=1 T2=0.5 T3=2 T4=3 und T1=2 T2=3 T3=1 T4=0.5

Hat da jemand ne Idee dazu?
Private Nachricht senden Benutzer-Profile anzeigen
 
yankemen
Forum-Century

Forum-Century


Beiträge: 104
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
     Beitrag Verfasst am: 17.05.2010, 16:14     Titel:
  Antworten mit Zitat      
Moin Simblio,

ich habe mich jetzt nicht mit der Matlab-Programmierung dazu befasst, aber der theoretische Hinterbau findet sich in der Kombinatorik ( http://de.wikipedia.org/wiki/Kombin.....folge_.28Kombinationen.29 ). Vielleicht hilft das weiter.

FF,
yankemen
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.