WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

"selbstständiges" Einlesen von unstrukturierten D

 

KathyLangstrumpf2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 16:46     Titel: "selbstständiges" Einlesen von unstrukturierten D
  Antworten mit Zitat      
Hallo,

ich habe Datensätze von Inputs und Outputs einer Simulation.
Diese habe ich vollständig eingelesen und dann verwertet. Da es sich um ca 25 Input und 50 Output Dateien (einfach Textdatei) handelt, die verarbeitet werden mit entsprechender Größe tut man gut daran das zu automatisieren.
Da vor allem die Input Dateien sehr unstrukturiert sind z.B.

1.01 Parameter1
50 Parameter2
abcd.in Parameter3
0 Parameter4
1.2868e-05 Parameter5

usw.
Mein bisheriger Code liest das "hardcoded" ein. Also jede Zeile für sich mit der richtigen Formatierung (Welches Zahlenformat, string etc) ein. Und weist in Matlab den Wert dem Unterstrukt-Parameter "Parameter X" zu. Das war ne Menge Arbeit.
Mit weiteren Versionen der Software haben die Entwickler leider Zeilen gelöscht, oft Zeilen getauscht oder neue Zeilen und damit Parameter hinzugefügt. Viele Parameter können jetzt zusätzlich in files hinterlegt werden, damit wird die Stringoption noch häufiger genutzt.

Ich habe versucht da hinterher zu kommen und die Files anzupassen, teils auch mit Zeile einlesen und if abfragen alle Optionen durchzutesten. Das ist aber langwierig, extrem zeitaufwändig (bei der Anzahl der Dateien und deren Größe) und frustrierend und die Releases und Versionen wechseln immer häufiger.

Hat jemand sich damit schon mal beschäftigt bzw. gibt es Einlesecodes die das automatisch(er) machen? Wenn das überhaupt in Gänze möglich ist mit Matlab, ist es sehr aufwändig (z.B. Zeichen für Zeichen einlesen, testen ob Zahl oder string oder Sonderzeichen, .... alle Optionen)

Da viele Parameter mehrfach genannt werden für verschiedene Boundaries, bleibt immer noch eine riesen Arbeit übrig das abzutesten. Leider nutzt kaum jemand die Software so automatisiert wie ich (oft 1000de Cases), damit hilft auch der Hersteller dabei nicht weiter.

Ich bin extrem dankbar für jede Abkürzung!

DANKE im Voraus!!

Kathy


SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2017, 13:41     Titel:
  Antworten mit Zitat      
Kannst du nicht einfach mit
Code:
textscan(fileID, '%s %s')
die Zeilen einlesen und anschließend eine Unterscheidung machen, je nachdem ob es sich um einen String handelt oder nicht?

Etwas Beispielcode würde auch sicher helfen!
Private Nachricht senden Benutzer-Profile anzeigen
 
KathyLangstrumpf2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2017, 11:40     Titel:
  Antworten mit Zitat      
Das ist der aktuelle Weg den ich fahre. Dafür muss man aber wissen, was als nächstes kommt. sprich Floating integer oder string....
Das geht wunderbar wenn die Reihenfolge und Struktur bekannt ist. Das ist sie aber mit jeder neuen Software Version nicht.
Da mein aktueller Code wunderbar funktioniert, und um alle Beispiele abzudecken meherere hundert Zeilen Code enthält, ich aber einen ganz anderen Weg suche, denke ich es macht keinen Sinn das hier komplett zu posten.

Mein Problem liegt in dem Zeitaufwand eben genau diesen Code jedes mal komplett neu anzupassen. (viele 10.000 Zeilen Code)

Ich suche nach einem kürzeren automatischen Weg, der nicht nach Einlesen einer Zeile ALLE Optionen durchtesten muss, weil sich jemand schon die Mühe gemacht hat dazu Code zu produzieren.
Um alle Zahlenformate zu unterscheiden, gibt's da von meiner Seite nur die Möglichkeit nach dem einlesen jede Ziffer zu prüfen, ob Zahl, Buchstabe oder Sonderzeichen und diese in Umfangreichen Zusammenhängen zu vergleichen. Man denke an 1.04589621e-18.
Da ist alles drin und es ist letztendlich ne Zahl. Ich "weiß" aber nicht das es ne Zahl ist. Die Macher der Software können durch z.B. Zeilentausch in der Struktur an dieser stelle auch genauso gut ein: Parameter.in stehen haben können.
Da würde ja der Code bei einer Zuweisung als Floating number ne Fehlermeldung geben und Abstürzen. Das ist nicht hilfreich, da ich matlab zur automatisierten Auswertung verwende.
 
SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2017, 11:55     Titel:
  Antworten mit Zitat      
ich würde schnell mit
Code:
isnan(str2double('1.04589621e-18'))
prüfen, ob sich der string in eine Zahl umwandeln lässt. Falls nicht ist es eine solche Parameterdatei, wenn es sich umwandeln lässt ist es der Parameterwert.

Dann sparst du dir immerhin das prüfen jedes einzelnen Zeichens.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.