|
|
|
Variablen im aktuellen WS erzeugen |
|
| MenschMeier |

Forum-Anfänger
|
 |
Beiträge: 43
|
 |
|
 |
Anmeldedatum: 22.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 16:41
Titel: Variablen im aktuellen WS erzeugen
|
 |
| |
 |
|
Hallo,
ich lese mittels importdata eine ASCII Datei ein, in der Messwerte und deren Titel stehen. Ich habe schon eine Funktion, die alle Messvariablen mit dem zugehörigen Namen als Basevariablen speichert.
assignin('Base', genvarname(newData1.colheaders{i}), newData1.data(:,i));
Das soll so sein, damit der User sich nun die benötigte variable raussucht und in die nächste Funktion eingeben kann.
Nun möchte ich aber eine andere Sache mit diesen Variablen machen, ich möchte sie in eine .mat File speichern. Eigentlich ganzzzz einfach, dachte ich. Aber leider kann ich nicht direkt aus einer Funktion auf Base zugreifen.
Eigentlich müsste man die variablen doch gleich so erzeugen können, dass sie von der Funktions aus aufrufbar sind. Ich habs mit Caller statt Base in Assignin versucht, aber das hat nichts gebracht.
Wie kann ich dynamische Variablen erzeugen, die ich in der gleichen Funktion verwenden kann, ohne evalin?
Danke
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 16:48
Titel:
|
 |
Hallo,
ich würde auf Dauer nicht empfehlen, mit importdata zu arbeiten.
textscan gibt mehr Kontrolle darüber, was man tut, und vermeidet dieses unangenehme assignin.
Wenn du aber schon dabei bist: du weißt ja, welche Variablen es geben wird (colheaders). Warum nicht den User an dieser Stelle fragen, welche Variablen er haben will, und nur diese überhaupt im Base Workspace anlegen?
Und etwas weitergehend: warum überhaupt Variablen mit dynamischen Variablennamen? Das verursacht generell mehr Probleme als es löst.
Grüße,
Harald
|
|
|
|
| MenschMeier |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 43
|
 |
|
 |
Anmeldedatum: 22.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 17:13
Titel:
|
 |
Hallo Harald,
also in einer der einzulesenden Dateien sind 80 Variablen (Spalten) und 48.000 Werte (Zeile) + die Name und Einheiten etc. (1-8 Zeile)
Die Einlesefunktion hatte mein Dozent schon geschrieben und ich sollte nur darauf aufbauen, daher würde ich gern Importdata lassen (wenns geht).
Die dynamsichen Namen sollen sein, da die 80 variablen eindeutig betitelt werden sollen und nicht nur durchnummeriert o.ä.
Meine derzeitige Aufgabe ist es, anstatt der ASCII Input Datei eine .mat Datei zu erzeugen, die alle Variablen enthält und die Inputdatei ersetzt. Am liebsten hätte er alle Variablen mit den jeweiligen Titel und den zugehörigen Messwerten in eine .mat datei exportiert. Im Prinzip ist das ja auch alles schon in der Import funkion intigriert, da diese die variablen mit Namen in Base schreibt, nur bekomme ich sie daraus eben nicht in einem .mat Datei.
Bekäme ich mit textscan die Variabeln besser abgespeichert?
lg
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 19:11
Titel:
|
 |
Hallo,
möglich ist das natürlich. Wenn du den assignin-Befehl durch etwas derartiges ersetzt:
sollten die Variablen im momentanen Workspace erzeugt werden.
Ich möchte jedoch noch einmal betonen, dass ich die Vorgehensweise insgesamt nicht für gut halte.
Grüße,
Harald
|
|
|
|
| MenschMeier |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 43
|
 |
|
 |
Anmeldedatum: 22.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 19:26
Titel:
|
 |
Ja, dass hatte ich auch schon versucht, aber das dauert ziemlich lang. Gerade weil ich etwa 300 von diesen Inputfiles einlesen möchte.
Welche Vorgehensweise würdest du denn vorschlagen? Ich kann die Einlesefunktion ja auch ändern, wenn das zu einem besseren Ergebnis führt.
lg
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 21:36
Titel:
|
 |
Hallo,
du kannst ja auch mit dem Profiler anschauen, welcher Teil des Programms wie lange braucht. Ich kann mir nicht vorstellen, dass die EVAL-Anweisung lange braucht.
Mit TEXTSCAN hättest du die Möglichkeit, von vorneherein nur die Spalten einzulesen, die von Interesse sind (wenn das denn vorab bekannt ist). Zudem ist zu vermuten, dass TEXTSCAN generell schneller ist - IMPORTDATA muss ja zunächst immer erst mal feststellen, was für eine Art Datei es ist etc.
Wie groß sind die Dateien in etwa, und wie lange dauert das Einlesen der 300 Dateien?
Grüße,
Harald
|
|
|
|
| MenschMeier |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 43
|
 |
|
 |
Anmeldedatum: 22.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 21:46
Titel:
|
 |
Eine Datei ist in etwa 48 Mb groß und hat 80 Spalten und 48.000 Zeilen. Das einlesen und aushaben mittel assignin dauert etwa 10 sekunden. Wenn ich aber statt dem assignin Befehl eval( ...) eingebe und mir damit die Variablen erstellen lasse, dann bracht er ziemlich lange. Würde schätzen über eine Minute. Ich teste es morgen mal mit den Profiler durch.
lg und gn8
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.10.2011, 08:12
Titel:
|
 |
Hallo,
das würde mich sehr wundern. Bitte sicherstellen, dass keine anderen Effekte im Spiel sind. So kann es sein, dass Dateien sich möglicherweise noch im Arbeitsspeicher befinden, wenn das Skript das erste Mal ausgeführt wird, und damit schneller geladen werden, als wenn sie tatsächlich von der Festplatte kommen.
Grüße,
Harald
|
|
|
|
|
|
|
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.
|
|