Ich möchte aus einem Vektor, der viele gleiche Werte hat, die alle nacheinander stehen einen Index herausziehen. In dem soll Anfangs- und Endzeile von jedem einzelnen Wert stehen. Die aufeinanderfolgenden Werte sollen auch ausgegeben werden.
Bsp.:
Code:
>> A=[1,1,1,1,1,2,2,1,1,5,5,5,5,3,3,2];
>> INDEX(A) ans =
Momentan mache ich das umständlich über eine Schleife, aber das geht doch sicherlich auch schneller oder? INDEX sollte im Endeffekt auch cell arrays erkennen (z.B. für die Indizierung einer Excel-Matrix, die aus einer Pivot-Tabelle herauskopiert wurde).
Danke für eure Vorschläge!
Super, vielen Dank für die schnelle Antwort!
Bei cell arrays wird das Ganze dann aber schon komplizierter, da geht's wahrscheinlich wieder nur über Schleife...
So ungefähr sollte das aussehen:
Code:
>> A=[{'1'},{'1'},{'1'},{'1'},{'1'},{'e'},{'e'},{'pht'},{'pht'},{'5'},{'5'},{'5'},{'5'},{'xy'},{'xy'},{'2'}] ;
>> INDEX(A) ans =
Schau dir mal das allererste Beispiel genauer an, dann siehst du, warum's damit nicht geht.
Aber obiger Vorschlag funzt einwandfrei - hatte nicht an den diff-Befehl gedacht.
Ist jetzt ein perfektes Beispiel für schlechtes, auf anderen Code aufbauendes Programmieren. Also bitte nochmal durchgucken und einen Code zusammenpacken, der für diese Aufgabe gemacht ist und auch wie der code oben funktioniert.
Ich hatte das vorher abgehakt, weil ich wieder den diff-Befehl vergessen hatte. Aber logisch, dass man's so machen kann!
Zusammengefasst und verschönert könnte das Ganze dann auch so aussehen:
Code:
A = [{'1'},{'1'},{'1'},{'1'},{'e'},{'e'},{'pht'},{'pht'},{'5'},{'5'},{'5'},{'5'},{'1'},{'xy'},{'xy'},{'2'}];
Die erste Zeile von Out braucht man in dem Fall nicht mehr, da ist es sinnvoller, eine zweite Variable anzulegen würde ich sagen. Praktisch: Input kann jetzt Vektor oder Cell array sein, das macht keinen Unterschied mehr!
Danke nochmal und schöne Ostern!
sieht gut aus. Das nenne ich mal gemeinschaftliches Programmieren.
Grüße,
der Oli
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.