Verfasst am: 08.06.2010, 08:52
Titel: Nummer einer Datei zuordnen
Hallo,
eine kleine Frage. Wie kann ich eine Nummer der Datei beim abspeichern zuordnen?
Code:
speichern = input('Möchten Sie die Ergebnisse speichern(j/n)?: ', 's');
if speichern == j
dat_nummer = input('Bitte, geben Sie die Nummer, unter der die Datei abgespeichert weden soll: ');
['Erg_' num2str(dat_nummer)] =[....];
dat_nummer = input('Bitte, geben Sie die Nummer, unter der die Datei abgespeichert weden soll: ', 's'); % 's' eingefügt -> String einlesen ['Erg_', dat_nummer] =[....];
dat_nummer = input('Bitte, geben Sie die Nummer, unter der die Datei abgespeichert weden soll: ');
save(['Erg_' num2str(dat_nummer) '.asc'],'Zuspeichernde_Variable','-ascii')
Logisch geht das nicht. Du weißt einem Vektor mit zwei Elementen einen Vektor mit drei Elementen zu und einer deiner Vektoren links ist noch dazu eine Konstante. Wie soll matlab das denn verteilen?
['Erg', dat_nummer] ist ein Vektor aus zwei Elementen - beides Strings, einer Konstant, der andere variabel. Du kannst den Vektor in eine Variable schreiben, dann bekommst Du einen String raus.
Einem String kannst Du aber keinen Wert zuweisen, der String *ist* ein Wert. Wenn Deine Variable so heißen soll, wie es in dem String steht, kannst Du eval() benutzen. Fürs Speichern ist das aber nicht nötig, dort musst Du ja ohnehin einen String als Dateinamen übergeben.
Danke für die Erklärung. Ich glaub, ich hab mich nicht genug präzise ausgedrückt.
Ich möchte einen Vektor [x, y, z] mit einem Namen ind einer Nummer versehen.
z.B. dat_1 = [x, y, z] oder dat_2 = [x, y, z], die Nummer soll vom Benutzer gewählt werden und dann diesen Vektor (auch mit derselben Nummer) im Format .asc speichern.
Also dynamische Variablennamen. Finde ich persönlich ausgesprochen hässlich. Unübersichtlich, kosten Performance und oben drein eigentlich fast immer unnötig.
Speicher die Werte doch ein einem Vektor, das macht auch die Weiterverarbeitung (z.B. in Schleifen) viel einfacher:
Code:
%tausende verschiedene Variablen, deren Namen zur Programmierzeit mehr oder weniger undurchsichtig sind
datensatz1 = [x1, y1, z1];
datensatz2 = [x2, y2, z2];
...
%bei einer verabeitung in einer schleife müssen wieder alle Namen dynamisch erzeugt werden. Die Anzahl der zuvor erzeugten Variablen ist unbekannt und muss ggf. gesondert mitgeführt werden.
%eine variable, klare
datensaetze(:, :, :, 1) = [x1, y1, z1];
datensaetze(:, :, :, 2) = [x2, y2, z2];
...
%bei einer verarbeitung in einer Schleife (die hier womöglich gar nicht mehr nötig ist) durchläuft man einfach die Matrix-Indizes an letzter Stelle. Anzahl der Variablen ist automatisch durch die Größe der Matrix bekannt.
Wenn Du das nicht so haben willst, guck Dir mal die Funktion eval() an. Damit kannst Du Befehle, die als String vorliegen als Matlab-Code interpretieren lassen.
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
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.