|
|
Vektor bearbeiten, Nur Werte in bestimmte Spalten schreiben |
|
OkinawaKaiten |

Forum-Newbie
|
 |
Beiträge: 1
|
 |
|
 |
Anmeldedatum: 18.02.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.02.2016, 18:36
Titel: Vektor bearbeiten, Nur Werte in bestimmte Spalten schreiben
|
 |
|
 |
|
Hallo,
ich habe eine Frage zu der Bearbeitung von Vektoren und leider kein Thema dazu gefunden.
Problem: Ich habe Messdaten eingelesen, leider ist die Datenmenge etwas groß. Nun habe ich einige Ergebnissvektoren mit jeweils 18 Millionen Dateneinträgen. Und diese Vektoren 140 mal.
Um die Datenmenge zu verringern, lese ich jetzt aus den Vektoren die Werte aus die einen bestimmten Grenzwert überschreiten.
So bekomme ich einen Vektor der nur noch genau so viele Einträge hat, wie Einträge des Gesamtvektors den Grenzwert überschreiten. Die Werte der einzelnen Einträge geben die Spalte an.
Bis hier hin funktioniert alles.
Ich möchte jetzt aber zu den Spalten die ich kenne immer noch 1000 Werte vorher und 1000 Werte nachher rausschreiben.
Bisher habe ich das wie folgt gelöst
Leider ist ein Vorgehen dieser Art Zeitlich nicht möglich, dauert zu lange.
Daher war meine Überlegung mir einen Vektor zu schreiben der überall wo Werte den Grenzwert überschreiten, eine 1 speichert.
BEISPIEL:
x=[1;2;3;4;3;2;1];
alle werte finden >2 und in y speichern
y=[0;0;1;1;1;0;0];
Diesen Vektor wollte ich dann versetzt auf den ursprungsvektor addieren
BEISPIEL:
Um eins versetzt
yneu = [0;0;1;2;1;1;0]
und mir dann alle Zellen speichern die einen Wert >= 1 haben.
Das Problem ist nur ich weiß nicht wie ich die Vektorgröße beibehalte und mir anstatt der Spaltennummer einen Wert in die bestimmte Spalte schreibe.
BEISPIEL:
x = [1;3;5;7;9]
ROWS=find(x > 6);
=> ROWS = [4; 5]
nun hätte ich gerne einen Vektor mit einsen an genau diesen Stellen
Also: z = [0;0;0;1;1]
Ich hoffe das Problem ist verständlich.
Viele Dank im vorraus
Viele Grüße
[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 18.02.2016, 19:39
Titel: Re: Vektor bearbeiten, Nur Werte in bestimmte Spalten schrei
|
 |
|
 |
|
Hallo OkinawaKaiten,
Ich verstehe die Frage noch nicht.
Der Code mit den EVALs ist mir nicht klar. Da sich mir bei EVAL aber sowieso immer die Fußnägel hochklappen, ...
Während Matlab problemlos mit Vektoren rechnen kann, die 18 Millionen Einträge haben, bremst EVAL den Code sehr aus, was schon mal den Faktor 100 ausmachen kann.
Ich möchte jetzt aber zu den Spalten die ich kenne immer noch 1000 Werte vorher und 1000 Werte nachher rausschreiben.
Zitat: |
Leider ist ein Vorgehen dieser Art Zeitlich nicht möglich, dauert zu lange. |
Ich verstehe die Funktion des gezeigten Codes nicht. Hast Du schon den Profiler bemüht um herauszufinden, was da die Zeit verbraucht? Möglicherweise vergrößerst Du einfach nur einen Array in jeder Iteration, was ja sehr viele Resourcen verbraucht, und eine einfache Pre-allocation würde den Code drastisch beschleunigen.
Zitat: |
x=[1;2;3;4;3;2;1];
alle werte finden >2 und in y speichern
y=[0;0;1;1;1;0;0]; |
Wozu das dienen soll, ist mir noch nicht klar. Kannst Du nochmal erklären, was Du genau erreichen möchtest?
Gruß, Jan
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|