Hierbei stehen in der zweiten Zeile die jeweiligen Kategorien:
1 <= 7 <= 31. Deswegen ist 7 in Kategorie 1
31 <= 46 <=54. Deswegen ist 46 in Kategorie 2
31 <= 47 <= 54. Deswegen ist 47 in Kategorie 2
etc.
Mein bisheriger Ansatz:
Code:
function[ Ziel1 ] = Ind2Ind(index, anf, anz)
i = index;
a = 1;
for i = 1:length(index) for j = 1:length(anf) % for j = a : length(anf) if anf(j) <= index(i) && index(i) <= anf(j) + anz(j)-1
index(i) = j;
break else
a = a +1;
end end end
Ziel1 = [i;index] end
Insgesamt wird das ganze aber etwas größer werden, sprich
~ 4000 Kategorien
~ 150000 Einträge
Da ist das Programm sehr langsam. Meine Idee war es die Tatsache zu nutzen, dass alle Vektoren geordnet (sortiert) sind und die innere Schleife in jedem Schritt anzupassen ( siehe die auskommentierte Zeile ).
Das Problem dabei ist, dass das Ergebnis falsch ist, sprich ab einer Schwelle wird index(i) nicht mehr verändert.
Sieht jemand den Fehler oder hat eine Idee das Ganze ganz anders (eleganter) zu lösen?
Gesucht ist nun ein Vektor (gleicher Länge wie index), der für jeden Eintrag die Position des größten Eintrags in anf, der kleiner als der Eintrag in index ist, angibt:
Zum Lernen, versuche die Zeile mit sum() zu verstehen. Diese ist der Schlüssel für die Lösung.
Viel Erfolg!
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.