Verfasst am: 28.06.2018, 15:36
Titel: Suche Äquivalent zum Excel-SVERWEIS
Hallo alle miteinander!
ich stehe vor einem kleinen Problemchen und zwar:
Ich habe eine Matrix A und einen Vektor B unterschiedlicher Größe, welche ausschließlich Zahlen enthalten (double):
Matrix A (2510x2), also 2 Spalten und 2510 Zeilen
Vektror B (525591x1), also 1 Spalte und 525591 Zeilen
Alle Werte des Vektors B sind dabei in der ersten Spalte von A enthalten und kommen somit mehrmals vor. In A kommt jeder Wert nur ein mal vor.
Nun soll wenn B == A(:,1) der dazugehörige Wert der zweiten Spalte A(:,2) in einem neuen Vektor C ausgegeben werden.
Beispiel:
Wenn der zweite Wert von B in Zeile 100 der ersten Spalte von A gefunden wird, soll der Wert der zweiten Spalte und 100. Zeile von A ausgegeben und in C gespeichert werden.
Unterm Strich:
Wenn ein Wert von B einem Wert der ersten Spalte von A gleicht, so soll der dazugehörige Wert (gleiche Zeile) der zweiten Spalte von A ausgegeben werden.
Liebe Grüße und schonmal vielen Dank für eure Antworten!
Statt einer Frequenz habe ich eine Windgeschwindigkeit und statt der Temperatur eine Leistung. Es soll also jeder Windgeschwindgkeit von B einer Leistung zugeordnet werden (2. Spalte A). Die Matrix A hat in der ersten Spalte die Windgeschwindigkeit und in der zweiten die dazugehörige Leistung. Übertragen auf meines wäre es folgender Code:
Code:
for n = 1:size(B,1)
P = B(n,1) == A(:,1);
C(n,:)=[B(n,1),A(P,2)];
end
Das Problem hierbei ist, dass die Schleife nach 4034 Durchläufen abbricht. Bei den bereits realisierten Durchläufen funktioniert die Zuordnung. Die Error-Meldung ist folgende:
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
Der Error kam aufgrund doppelter Werte in der ersten Spalte von A.
Jetzt muss ich es noch etwas erweitern und eine Bedingung hinzufügen.
Die Matrix A ist dabei eine Referenzkennlinie einer Windkraftanlage, in welcher einer Windgeschwindigkeit die daraus resultierende Leistung zugeordnet wird und Vektor B enthält Messwerte der Windgeschwindigkeit. Nun habe ich bei einer anderen Anlage zwei Kennlinien. Die zweite repräsentiert einen gedrosselten Modus.
A hat in diesem Fall die Dimension (2510x3).
Spalte 1: Windgeschwindigkeit
Spalte 2: Leistung normal
Spalte 3: Leistung gedrosselt
B ist nun eine Matrix mit zwei Spalten (525591x2).
Spalte 1: Windgeschwindgkeit
Spalte 2: index
Der Index hat die Werte 1 oder 0.
Nun soll der Windgeschwindkeit aus B, welche einen Index von 1 hat, eine Leistung der zweiten Spalte von A zugewiesen werden. Ist der Index 0, der entsprechende Wert aus der dritten Spalte. Ich habe es so probiert, was allerdings zu einem falschen Ergebnis führt (kein Error).
Ich hoffe, es ist so weit nachvollziehbar und schonmal vielen Dank im Voraus!
Einstellungen und Berechtigungen
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
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.