|
|
Vorfiltern von Daten vor Import |
|
dasdassad |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 09.07.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.07.2019, 13:07
Titel: Vorfiltern von Daten vor Import
|
|
|
|
|
Hallo zusammen,
leider habe ich kein passendes Thema im Forum gefunden, sodass ich direct nach Eurer Hilfe frage.
Ich möchte mir Daten aus einer Excel in eine Matrix übergeben lassen. Leider sind die Dateien mit 70000+ Datenpunkten sehr groß, sodass die normale Datenübergabe an Ihre Grenzen stösst.
Ich habe bisher in SCILAB über readxls() und über die entsprechende Spaltenzuordnung die Daten je Spalte einzeln importiert und dann in eine Matrix zusammengeführt.
Hier habe ich zwei Themen, die wahrscheinlich deutlich sinnvoller anders umgesetzt warden können.
- Besteht die Möglichkeit, vorab in einer definierten Spalte nach einen Wert zu suchen und alle Zeilen mit diesem Wert in eine Matrix zu übergeben?Wenn ja, wie könnte man dies umsetzen?
- aktuell ziehe ich über den Befehl GetMonitoringValues = s1(2:65000,5) alle Werte aus der Spalte 5. Ich bin mir nicht ganz sicher,aber hier ist ein Limit zwischen 65000 und 70000, bevor ein Fehler gemeldet wird. Im Moment schaue ich vorab in die Exce l und definiere den Y-Wert s1(x:Y,Z) händisch in Abhängigkeit der Datei. Gibt es hier eine Möglichkeit, importiere bis "leere Zelle", umzusetzen?
Besten Dank vorab
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.07.2019, 13:21
Titel:
|
|
|
|
|
Hallo,
Zitat: |
Leider sind die Dateien mit 70000+ Datenpunkten sehr groß, sodass die normale Datenübergabe an Ihre Grenzen stösst. |
Je nach Anzahl und Art der Spalten sollte das eigentlich noch kein Problem sein. 20 Spalten mit Doubles wären beispielsweise "nur" 11 MB und sollten locker in den Speicher passen.
Zitat: |
Besteht die Möglichkeit, vorab in einer definierten Spalte nach einen Wert zu suchen und alle Zeilen mit diesem Wert in eine Matrix zu übergeben? Wenn ja, wie könnte man dies umsetzen? |
Ja, allerdings müssten zunächst alle Daten eingelesen werden. Dann geht z.B.
Zitat: |
bevor ein Fehler gemeldet wird. |
Welcher Fehler? Bitte poste zusammenhängenden Code. Das macht alles deutlich nachvollziehbarer.
Zitat: |
Gibt es hier eine Möglichkeit, importiere bis "leere Zelle", umzusetzen? |
Leere Zelle in einer Spalte oder nur noch leere Zellen in allen Spalten? Letzteres wäre die UsedRange, die man über ActiveX auslesen kann. Ist aber mühsam, andere Möglichkeiten wären also zu bevorzugen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
dasdassad |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 09.07.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.07.2019, 14:03
Titel:
|
|
|
|
|
Hallo Harald,
danke für die Rückmeldung
Meine Funktion sieht bisher folgend aus:
Zitat:
Leider sind die Dateien mit 70000+ Datenpunkten sehr groß, sodass die normale Datenübergabe an Ihre Grenzen stösst.
Da hast Du recht. Es kommt immer eine FEhlermeldung, wenn in meiner Formel die Variable b größer als die Werte in der Excel sind.
Zitat:
Besteht die Möglichkeit, vorab in einer definierten Spalte nach einen Wert zu suchen und alle Zeilen mit diesem Wert in eine Matrix zu übergeben? Wenn ja, wie könnte man dies umsetzen?
Das probiere ich einmal aus.
Zitat:
bevor ein Fehler gemeldet wird.
siehe erster Punkt
Zitat:
Gibt es hier eine Möglichkeit, importiere bis "leere Zelle", umzusetzen?
In nur einer Spalte. Ich habe ein Bild angehangen, hier alle Spalten bis P_PARTID ist leer.
Ich habe noch eine andere Frage Richtung Vereinfachung. Ich rufe aktuell die obige Funktion mehrmals auf, um alle Spalten zu übergeben und dann in einer Matrix zusammenzuführen.
Gibt es eine Möglichkeit etwas ähnliches wie s1(a:b,1,2) für beigefügtes Beispiel, das man P_PARTID und PS-MEAN usw. direct in einer Funktion übergeben kann.
Besten Dank vorab
P.S.: Blöde Frage: wie funktioniert das mit der Zitat-Hervorhebung?
Beschreibung: |
|
Download |
Dateiname: |
Daten.JPG |
Dateigröße: |
34.85 KB |
Heruntergeladen: |
428 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.07.2019, 15:43
Titel:
|
|
Hallo,
die Funktion ist kein MATLAB-Code.
Zitat: |
Es kommt immer eine FEhlermeldung, wenn in meiner Formel die Variable b größer als die Werte in der Excel sind. |
Bitte die Meldung kopieren statt übersetzen. end oder min(b, end) statt b sollte helfen.
Zitat: |
Gibt es eine Möglichkeit etwas ähnliches wie s1(a:b,1,2) für beigefügtes Beispiel, das man P_PARTID und PS-MEAN usw. direct in einer Funktion übergeben kann. |
Bei xlsread in MATLAB kein Problem. Da kannst du einen beliebigen Bereich angeben oder gleich die gesamte Datei einlesen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
dasdassad |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 09.07.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.07.2019, 19:50
Titel:
|
|
Hallo Harald,
ich musste leider Scilab nehmen, da Geld für die Lizenz fehlt.
Habe aber Deine Tips umgesetzt. End habe ich in % geändert, funktioniert nun ohne Probleme und auch bei >100000.
Besten Dank dafür.
Ich habe aber noch eine andere Frage, bei der ich nicht recht weiterkomme. Ich lasse aktuell alle Werte ausgeben, die eine 1 in der ersten Spalte der Matrix M haben. Ich bekomme hier auch alle Werte, jedoch nur die Position in der Matrix. Ich würde aber gerne die gesamte Zeile anzeigen lassen, damit ich dann diese Werte in eine andere Matrix abspeichern kann.
Ich habe meinen bisherigen Code beigefügt. Bin für Hilfe dankbar.[/code]
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 10.07.2019, 08:18
Titel:
|
|
Hallo,
genau das habe ich doch beschrieben:
in dem Fall also
So funktioniert es in MATLAB. Ob es in SciLab auch so funktioniert, weiß ich nicht. Es gibt hier ein Unterforum für SciLab, dort wären Fragen dazu am besten aufgehoben.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Verschoben: 11.07.2019, 12:51 Uhr von Jan S Von "Suche Funktion für ..." nach Scilab / Xcos (ehemals Scicos) Forum |
|
|
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 - 2024
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.
|
|