Nun möchte ich F1 und F2 vergleichen, jedoch nur den ersten Wert von F1 mit den ersten wert von F2, den zweiten Wert von F1 mit dem zweiten Wert von F2 usw. Wenn die Werte gleich sind (in diesem Fall an stelle 1 und 3), möchte ich die entsprechenden Werte (also an selber stelle) aus U und I nehmen und mit diesen weiter rechnen:
Mir ist gerade aufgefallen, dass meine Vektoren nicht immer dieselbe Länge haben. U und F1 sind immer gleich lang und I und F2 auch, jedoch F1 und F2 bzw. U und I nicht immer. Die letzten Werte in dem längeren Vektor sind egal, es soll immer noch 1. Wert von F1 mit 1. Wert von F2, 2. Wert von F1 und 2. Wert von F2 usw verglichen werden. Gibt es dafür auch einen Befehl?
Danke! Das funktioniert super für das von mir erstellte Beispiel in dieser Frage. Wende ich es jedoch für meinen richtigen Code an, kommt da Quatsch raus.
das Problem liegt daran, dass der Befehl
ismember
den ersten Array (sprich F1 in unserem Fall) schrittweise durchgeht und überprüft ob der Wert im ganzen zweiten Array (bei uns F2) vorkommt - deswegen sieht u so aus:
u(1) = 1 --> weil 50 in F1(1) und F2(1)
u(2) = 1 --> weil 2800 in F1(2) und F2(
u(3) = 1 --> weil 9850 in F1(3) und F2(4)
und so weiter und so fort!
Da ich ein Fan von Matrizen bin und Schleifen vermeiden will können wir das so angehen:
Code:
temp = min(length(F1),length(F2)); %Schauen welcher Array kleiner ist
u = U(eq(F1(1:temp),F2(1:temp))); % Dieser Befehl vergleicht Index-basiert
Wie du siehst, habe ich zum Schluss deine Berechnung von u und u1 kombiniert - du kannst sie aber auch so lassen wie du es gemacht hast!
Der Eckpunkt an dieser Sache ist halt, dass
eq()
zwei gleich große Arrays erfordert - da du aber anfangs erwähnt hast, dass du nur den kürzeren benötigst, denke ich es sollte passen!
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.