|
|
Zeilen löschen, die keine "ganzen" Zahlen sind |
|
senni |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.06.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2015, 17:24
Titel:
|
 |
Hallo,
ich habe ein ähnliches Problem. Nur würde ich gerne alle Zeilen löschen, die keine "ganzen" Zahlen sind. Also alles was 1,003s, 2,3s usw ist. Die Zeitreihe hat momentan über 50.000.000 Zeilen und ist damit viel zu groß.
Meine Matrix beinhaltet in der ersten Spalte die Zeit und in der zweiten einen Wert. Wäre wirklich super, wenn ihr mir bei dem Code helfen könntet.
Meine Überlegung war eine for-Schleife die von 1 immer hochzählt und den Schwellenwert neu setzt, aber irgendwie bekomme ich es nicht hin.
Oder man rundet die Werte vorher und vergleicht dann, mit einer if-Schleife, ob sie dem nächsten Wert entsprechen und wenn ja, löscht man die Zeile. Leider schaffe ich es nicht, ein entsprechenden Code zu schreiben.
Die Zeitreihe geht bis 2.588.400 s. Im nächsten Schritt würde ich dann nur jede 60. Sekunde, also 1 Minute speichern.
Da die Zeitschritte variieren, muss ich es so umständlich machen
|
|
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 05.09.2015, 18:53
Titel:
|
 |
bitte keine alten thread karpern.
Zitat: |
Meine Überlegung war eine for-Schleife die von 1 immer hochzählt und den Schwellenwert neu setzt, aber irgendwie bekomme ich es nicht hin. |
das ist keine gute fehlerbeschreibung. ich kann in deinem code auch keine forschleife entdecken.
Zitat: |
Oder man rundet die Werte vorher und vergleicht dann, mit einer if-Schleife |
eine if-schleife gibt es nicht.
ich würde mit
round
und logischen indizieren arbeiten ohne schleifen.
für den zweiten teil könnte ich mir vorstellen
mod
zu benutzen
_________________
richtig Fragen
|
|
|
senni |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.06.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2015, 19:16
Titel:
|
 |
Sorry, ich wollte keinen neuen Thread aufmachen, wenn sich meine Frage auf den alten bezieht, bzw. dem ähnelt.
Ich habe das nicht in einen Code umsetzen können, daher findet sich auch keine for-Schleife in meinem Code. Das wollte ich mit dem Schwellenwert-Code aus diesem Thread umsetzen. Nur müsste man dann ja eine neue Matrix erstellen, deren erste Zeile die erste Zeile der alten Matrix darstellt. Erhöht man jetzt den Schwellenwert um eins, müsste jetzt aber die 1. Zeile in die zweite Zeile der neuen Matrix geschrieben werden usw... Leider weiß ich absolut nicht, wie man das in einem Code schreibt.
Wie würde das mit dem mod funktionieren? Ich bin leider totaler Anfänger... So wie ich es verstanden habe, gibt es den Rest aus?
Vielen Dank schonmal für die Antowrt!
|
|
|
Gesplittet: 05.09.2015, 19:58 Uhr von Winkow Von Beitrag Matrix Daten löschen ohne Schleife? aus dem Forum Programmierung |
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 05.09.2015, 20:03
Titel:
|
 |
beitrag geteilt. verwandtes thema hier:
http://www.gomatlab.de/viewtopic.ph.....23d99f96c5a0f8ba2249bc911
sry ich bin nicht auf die schwellwert methode eingegangen weil ich keinen sinnvollen zusammenhang zu deiner frage gesehen habe. bitte erkläre nochmal was der schwellwert mit ganzen zahlen zu tun hat?
warum versuchst du es nicht mit
round
und logischen indizieren wie ich vorgeschlagen hab? du musst ja nur gucken welche zeilen ihrem gerundeten wert entsprechen und alle anderen löschen.
Zitat: |
Wie würde das mit dem mod funktionieren? |
wenn du nur alle 60sek werte haben willst ist die zahl also restlos durch 60 teilbar oder?
_________________
richtig Fragen
|
|
|
senni |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.06.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2015, 20:55
Titel:
|
 |
|
 |
|
Sorry, das mit den "ganzen" Zahlen war völlig falsch ausgedrückt von mir.. tatsächlich gibt es in der Zahlenreihe nur zwei Zeilen (Anfangs- und Endwert) die keine Kommastellen besitzen. Der Code von dir funktioniert daher, speichert mir aber dann nur die zwei Zeilen. Die Zahlenreihe sieht bspw. wie folgt aus:
0 20
0,0100000000000000 20,5214597165162
0,0200000000000000 21,0102704778657
0,0574597595608982 22,5852359088327
0,100913309818150 23,9923600856256
0,975824518050485 28,2475362909541
1,00961034570137 28,2499788789789
1,04219518426418 28,2518932600377
1,07446992021885 28,2534552006150
1,37251366323509 28,2608492954465
usw usw usw... ich wollte jetzt das ganze runden und dann sieht es bspw. so aus:
0 28
0 28
1 28
1 28
1 28
2 28
2 28
jetzt würde ich gerne jeweils nur eine Zeile mit 0,1,2,... speichern und alle anderen löschen. Daher dachte ich man könnte das mit dem Schwellenwert und einer for-Schleife lösen.
Oder ich schneide es eeinfach auf zwei Nachkommastellen ab (oder eine) ohne runden... dann habe ich ja mehr Treffer bei den "ganze" Zahlen..
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 05.09.2015, 21:03
Titel:
|
 |
dann halt erst runden und dann
unique
benutzen. ob das wissenschaftlich sinnvoll is zweifel ich an aber das ist das was du willst.
_________________
richtig Fragen
|
|
|
senni |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.06.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2015, 22:13
Titel:
|
 |
Super vielen, vielen Dank!!
Ja, dass es wissenschaftlich nicht korrekt ist, weiß ich. Jedoch habe ich auch nur Studenwerte die ich schon auf Sekundenwerte aufgeteilt habe, was ja schon ein großes Fehlerpotential bietet. Von daher ist eine genauere Betrachtung kleiner von s auch nicht mehr wissenschaftlich.
Eine Frage habe ich nur noch. Wenn ich den Code wie folgt eingebe:
speichert es mir nur die erste Spalte.
Gebe ich es so ein:
nimmt er zwar beide Spalten mit, schreibt aber dennoch mehrere Zeilen doppelt, wenn sich diese in Spalte2 unterscheiden.
Gibt es hierfür vielleicht noch eine Möglichkeit?
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 05.09.2015, 22:41
Titel:
|
 |
hallo immer die dokumentation genau lesen.
unique
hat weitere rückgabe werte. du willst nicht die unique werte sondern deren position in der ursprungs matrix. mit deren hilfe baust du dann die neue matrix.
_________________
richtig Fragen
|
|
|
|
|
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.
|
|