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

Eliminierung Doppelwerte

 

quay

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2014, 10:05     Titel: Eliminierung Doppelwerte
  Antworten mit Zitat      
Servus zusammen

Mit welchem Befehl kann ich in Matlab in einer Spalte sämtliche Doppelnennungen eliminieren (also wenn der selbe wert 3 mal vorkommt nur 1 mal behalten?) und die restlichen mit NaN ersetzen? gibt es da irgend einen Befehl? unique() verändert mir aus irgendwelchen gründen die Zahlen;) Die Doppelnennung sollen daher mit NaN ersetzt werden weil sie in einer Suchtabelle sind und die restlichen Werte nicht verloren gehen dürfen.

Danke


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 12.03.2014, 11:16     Titel:
  Antworten mit Zitat      
UNIQUE ist schon richtig. Wenn UNIQUE was verändert läuft was anderes falsch. Einfach mal ein paar Beispieldaten und die genaue Codezeile posten.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 12.03.2014, 12:47     Titel:
  Antworten mit Zitat      
Hallo,

nun ja, unique() sortiert und verkürzt die Vektoren. Wenn ich es richtig verstehe: gefragt ist aber nach einem gleichlangen Vektor, der statt der doppelten Elemente an den Stellen dann NaN haben soll. Mit einer Schleife kriegt man das so hin, bin mir nicht sicher, ob das ohne Schleife geht, finde das Thema aber interessant und würde mich auch über eine elegantere Lösung erfreuen:
Code:
A = [1 1 6 6 2 3 3 9 8 6 2 4];
a = unique(A);
for i = 1:length(a)
    idx = find(A==a(i));
    if length(idx) > 1   % bei mehr als einem Treffer...
        toNaN = idx(2:end);   % ... alle ab dem zweiten Treffer nehmen...
        A(toNaN) = NaN;   % ... und auf NaN setzen.
    end
end

Viele Grüße,
Nras
Private Nachricht senden Benutzer-Profile anzeigen
 
quay

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2014, 11:03     Titel: Eliminierung Doppelwerte
  Antworten mit Zitat      
Dank Andreas, ich glaub du hast das Problem schon richtig erkannt. Ich kann den Befehl unique verwenden, sofern ich beide einzeln eingebe (dann stimme die Ordnung aber nicht mehr), bekomme dann aber bei einer Spalte ca. 10 Werte weniger/ nur dieses [] Zeichen. Somit muss ein Fehler drin sein der es mir nicht erlaubt die Matrix zu machen, den ich aber leider nicht finden kann. Ich bin zuerst von NaN Werten ausgegangen die man nicht kürzen kann mit unique (weis aber nicht ob es das ist). Ich habe sämtliche Daten durchgeschaut und bin nicht auf einen Fehler gestossen.

Grüsse und vielen Dank für die Hilfe

Fragefile.xls
 Beschreibung:
hier sind die Daten die ich dafür gebraucht habe

Download
 Dateiname:  Fragefile.xls
 Dateigröße:  4.08 MB
 Heruntergeladen:  400 mal
testcode.m
 Beschreibung:
hier ist der der Code den ich verwendet habe

Download
 Dateiname:  testcode.m
 Dateigröße:  573 Bytes
 Heruntergeladen:  208 mal
 
quay

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2014, 11:18     Titel:
  Antworten mit Zitat      
hier die Daten wenn es diesesmal mit dem upload funktioniert.

testcode.m
 Beschreibung:

Download
 Dateiname:  testcode.m
 Dateigröße:  573 Bytes
 Heruntergeladen:  265 mal
Fragefile.xls
 Beschreibung:

Download
 Dateiname:  Fragefile.xls
 Dateigröße:  4.08 MB
 Heruntergeladen:  507 mal
 
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.