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

keine doppelten Werte

 

asphalt
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 06.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2011, 15:06     Titel: keine doppelten Werte
  Antworten mit Zitat      
Hallo

Ich habe einen Vekor x in dem Werte einfach oder mehrfach vorkommen. Jetzt möchte ich einen neuen Vektor y erstellen in dem alle Werte vorkommen die im Vektor x vorhanden sind. Wenn der Wert in Vektor x doppelt oder maerfach vorkommt, dann darf dieser Wert nur einmal in Vektor y vorkommen.
Code:


x = [ 3 4 4 5 7 7 7 ]
y = [ 3 4 5 7 ]
 


Hat hierfür jemand eine Idee wie ich das Problem lösen könnte?

Danke?
Private Nachricht senden Benutzer-Profile anzeigen


Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2011, 15:09     Titel:
  Antworten mit Zitat      
Hi,

Code:
 
asphalt
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 06.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2011, 15:27     Titel:
  Antworten mit Zitat      
Perfekt

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
CaroCS
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 09.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2011, 22:15     Titel:
  Antworten mit Zitat      
Hallo!

Der Befehl "unique" hat mir schon mal sehr geholfen! Nun weiß ich, dass in meinem Vektor einige Werte doppelt/mehrfach auftauchen.
Ich habe aber noch eine weitere Frage:
Wie kann ich denn nun die Zelleinträge finden, die doppelt/mehrfach vorkommen?

Über [Nummer]=find(...) komme ich nicht weiter, da ich ja keine genaue Angabe machen kann, was er suchen soll. Ich benötige aber irgendwie die Indizes meines Ursprungsvektors in denen Werte stehen, die insgesamt öfter vorkommen.

Beispiel, damit es klarer wird Smile :

Vektor=[1 2 3 1 4 5 6 6 7 8 6]

D.h. ich möchte nun, dass Matlab mir z.B. einen Vektor "Mehrfach" ausgibt mit:

Mehrfach=[1 4 7 8 11], da an der Stelle 1, 4, 7, 8 und 11 in "Vektor" Werte stehen, die mehrfach in "Vektor" vorkommen.


Ich hoffe es kann mir jemand helfen?

Danke schonmal und einen schönen Abend!!!

Caro
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.09.2011, 23:06     Titel:
  Antworten mit Zitat      
Hallo CaroCS,

Die mehrfachen Werte findest Du mit dem Befehl HISTC. Allerdings müssen die Werte dafür sortiert sein, was sie aber nach UNIQUE sind:
Code:
v = [1 2 3 1 4 5 6 6 7 8 6];
u = unique(v)
n = histc(v, u);
isMultiple = find(ismember(v, u(n > 1)))

Optisch gefällt mir das nicht so gut. Es ist aber schnell.

Dies ist aber noch schneller, vor allem sortiert es nur einmal:
Code:
[s, index] = sort(v);
m = [true, diff(s) == 0];
m(findstr(m, [false, true])) = true;
isMultiple(index) = m;

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
dotwinX
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 06.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2012, 12:13     Titel:
  Antworten mit Zitat      
Moin, ich habe ein ähnliches Problem, leider nur etwas komplexer und ich komm nicht auf eine gescheite Lösung

Ich habe 2 Spaltenvektoren, X1,X2,X3,.... und Y1,Y2,Y3,...
Innerhalb jedes Spaltenvektors kann es häufig auftreten, dass sich Werte wiederholen, was nicht schlimm ist.
Ich würde gerne die Werte finden, die in Kombination X und Y mehrfach auftreten.
Beispiel:
A=[1 1 2 2 3 3 4 4 5 5 1]
B=[9 8 7 5 5 4 3 2 1 0 9]
Die A-B Kombination A=1 und B=9 ist zweimal vorhanden, ganz vorn und ganz hinten im Vektor.
Wie erhalte ich hier den Index!?

Ich steh aufn Schlauch..
Private Nachricht senden Benutzer-Profile anzeigen
 
dotwinX
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 06.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2012, 15:47     Titel:
  Antworten mit Zitat      
Pause hat geholfen, habs hinbekommen:

Code:


% Findet die gleichen X&Y Einträge
[b, m, n] = unique(dexel(:,1:2), 'rows','first');
indexfirst=sort(m); %Index "zurücksortieren", da unique immer sortiert...
indexsecond=setdiff(1:length(dexel),indexfirst); %Gegenteil von indexfirst
indexsecond=indexsecond'; clear b; clear m; clear n;

% indexfirst und indexsecond sind die Indezes, die gleiche X und Y Werte
% getrennt haben in dexel_A und dexel_B, Z-Werte sind aber noch gemischt:
dexel_A=dexel(indexfirst,:);
dexel_B=dexel(indexsecond,:);

% Preallocation:
dexel_o=zeros(length(dexel_A),3);
dexel_u=zeros(length(dexel_B),3);

% Z-Wert wird vergleichen um obere und untere Spanschale zu bestimmen:
if length(dexel_o)==length(dexel_u)
    for i=1:1:length(dexel_o)
        if dexel_A(i,3) > dexel_B(i,3)
            dexel_o(i,:) = dexel_A(i,:);
            dexel_u(i,:) = dexel_B(i,:);
        elseif dexel_A(i,3) < dexel_B(i,3)
            dexel_o(i,:) = dexel_B(i,:);
            dexel_u(i,:) = dexel_A(i,:);
        else
            disp('3. Spalte: Dexel hat gleiche Länge!?')
            return
        end
    end
else
    disp('Fehler, falscher Input, da unterschiedliche Anzahl von oberen und unteren Dexel')
    return
end

 
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.