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

Vektoren vergleichen und Zeilennummer erhalten

 

Matlab_User85
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 03.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2015, 21:06     Titel: Vektoren vergleichen und Zeilennummer erhalten
  Antworten mit Zitat      
Hallo zusammen,

ich muss zwei Vektoren miteinander vergleichen um die jeweilige Zeilennummer eines Vektors zu erhalten.

Es liegt mir beispielsweise ein Vektor mit 90 Schlüsselzahlen vor:

Code:

Keys=[ 70 , 71 , ... , 77 , ... ,  214]
 


Und ein Zuweisungs-Vekor mit ungefähr 180 Elementen z.B.

Code:

Zuweisungs-Vektor = [371, 351 , 368, ..., 77, ... 29 ]
 


Mein Ziel ist nun die Komponenten von Keys mit den Komponenten des Zuweisungsvektor zu vergleichen.

Wenn eine Zahl übereinstimmt (hier die Zahl 77 ) möchte ich die zugehörige Zeile des Zuweisungs-Vektors für die übereinstimmenden Zahlen erhalten.

Hierbei können beliebig viele Zahlen des Keys-Vektors im Zuweisungsvektor vorkommen.
Nicht jede Zahl des Keys-Vektors ist auch eine Zahl im Zuweisungsvektor.

Ich hoffe ihr könnt mir bei meinem skizzierten Problem helfen.

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


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 25.02.2015, 02:34     Titel:
  Antworten mit Zitat      
Hallo,

ismember ist hier hilfreich:
Code:
keys = 1:10;
v = randi(30, 1, 20);

idx = cell(size(keys));   % pre-allocate
for ii = 1:size(keys,2)
    idx{ii} = find(ismember(v, keys(ii)));
end

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlab_User85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 03.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2015, 09:15     Titel:
  Antworten mit Zitat      
[quote="Seban"]Hallo,

ismember ist hier hilfreich:
Code:
keys = 1:10;
v = randi(30, 1, 20);

idx = cell(size(keys));   % pre-allocate
for ii = 1:size(keys,2)
    idx{ii} = find(ismember(v, keys(ii)));
end

Grüße,
Seban[/quote

Hallo,

leider funktioniert dieser Ansatz nicht bei mir.


Der Key-Vektor besitzt zum Beispiel die folgende Form

Code:

Keys=[ 70 : 213]
 


Jede Zahl kann nur einmal vorkommen.

Im Zuweisungsvektor kann jede Zahl auch nur einmal vorkommen:


Code:

Zuweisungen=[
88
195
196
85
198
84
201
83
78
207
208
79
211
212
213
102
90
89
87
86
82
81
80
77]
 



Nun möchte ich durch die Zuweisung von den Keys auf den Zuweisungsvektor die jeweilige Zeile im Zuiweisungsvektor als Zahl erhalten.

Für die Zahl 85 zum Beispiel als Antwort 4, weil die Zahl 85 im Key-Vektor vorkommt und im Zuweisungsvektor als Zahl in der 4.Zeile steht.


Key-Vektor als auch Zuweisungsvektor sind Spaltenvektoren
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: 25.02.2015, 14:20     Titel:
  Antworten mit Zitat      
Hallo Matlab_User85,

Zitat:
leider funktioniert dieser Ansatz nicht bei mir.

Es ist im Forum immer hilfreich, wenn "funktioniert nicht" mit hinreichend vielen Details erklärt wird. Dann kann man Verbesserungsvorschläge machen.

Zitat:
Code:
Keys=[ 70 : 213]

Key-Vektor als auch Zuweisungsvektor sind Spaltenvektoren

Es sieht nach einem Zeilen-Vektor aus.

Zitat:
Nun möchte ich durch die Zuweisung von den Keys auf den Zuweisungsvektor die jeweilige Zeile im Zuiweisungsvektor als Zahl erhalten.

Das ist nicht klar.
Ich vermute, Du brauchst einfach nur die 2. Ausgabe von HISTC:
Code:
[value, bin] = histc(Keys, Zuweisung);

Gruß, Jan

Für die Zahl 85 zum Beispiel als Antwort 4, weil die Zahl 85 im Key-Vektor vorkommt und im Zuweisungsvektor als Zahl in der 4.Zeile steht.


Key-Vektor als auch Zuweisungsvektor sind Spaltenvektoren[/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlab_User85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 03.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2015, 15:43     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Matlab_User85,

Zitat:
leider funktioniert dieser Ansatz nicht bei mir.

Es ist im Forum immer hilfreich, wenn "funktioniert nicht" mit hinreichend vielen Details erklärt wird. Dann kann man Verbesserungsvorschläge machen.

Zitat:
Code:
Keys=[ 70 : 213]

Key-Vektor als auch Zuweisungsvektor sind Spaltenvektoren

Es sieht nach einem Zeilen-Vektor aus.

Zitat:
Nun möchte ich durch die Zuweisung von den Keys auf den Zuweisungsvektor die jeweilige Zeile im Zuiweisungsvektor als Zahl erhalten.

Das ist nicht klar.
Ich vermute, Du brauchst einfach nur die 2. Ausgabe von HISTC:
Code:
[value, bin] = histc(Keys, Zuweisung);

Gruß, Jan

Für die Zahl 85 zum Beispiel als Antwort 4, weil die Zahl 85 im Key-Vektor vorkommt und im Zuweisungsvektor als Zahl in der 4.Zeile steht.


Key-Vektor als auch Zuweisungsvektor sind Spaltenvektoren
[/quote]

Hallo Jan. Entschuldigung, ich werde es mir für das nächste Mal merken.

Habe deine Idee gerade mal auf mein Problem angewendet. Ich erhalte nach der Ausführung folgende Fehlermeldung:

Code:

Error using histc
Edge vector must be monotonically non-decreasing.
 


Weißt Du vielleicht woran das liegen kann? Vektorkompnenten dürfen nicht monoton ansteigen?

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 26.02.2015, 04:41     Titel:
  Antworten mit Zitat      
Hallo,

So?
Code:
log = ismember(Zuweisungen, Keys);
n = log .* (1:size(log,1))';

Grüße,
Seban

PS: Das zitieren ganzer Beiträge bietet mMn keinen Mehrwert; im Gegenteil, der Thread wird bloß unübersichtlich.
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlab_User85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 03.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2015, 09:29     Titel:
  Antworten mit Zitat      
Hallo Seban,

genauso habe ich mir das vorgestellt.


Vielen Dank nochmal an euch. Ihr habt mir sehr damit geholfen.
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.