|
|
save variierende Variablen |
|
Doppler |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 20.07.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 20.07.2013, 13:18
Titel: save variierende Variablen
|
 |
Hallo!
Ich habe einen Ordner mit viele Dateien im Format trxxstxxdxx_mean.mat bestehend aus einer 3x3 Matrix. Nun soll in allen ein bestimmter Wert verdoppelt werden. Das funktioniert auch so weit. Mein Problem ist das Speichern auf den Ausgangsnamen der Datei, weil ich die Variable "intData" eingeführt habe.
Mein Code sieht folgendermaßen aus. Der letzte Befehl lässt sich nicht ausführen, evtl. auch nur ein Syntaxfehler, auf den ich nicht komme:
Vielen Dank für hilfreiche Tipps!
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.07.2013, 13:28
Titel:
|
 |
Hallo,
versuche doch, ohne EVAL auszukommen. Das macht das ganze nur unnötig schwierig zu debuggen.
Zudem würde ich die Daten jeweils in eine Struktur laden, also z.B. so:
Zitat: |
Der letzte Befehl lässt sich nicht ausführen |
Wie äußert sich das? Gibt es eine Fehlermeldung? Welche?
Grüße,
Harald
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 20.07.2013, 13:31
Titel:
|
 |
oh gott warum sind da so viele evals?
von eval sollte man wenns geht die finger lassen. macht das ganze sehr schwer zu debuggen. und es ist in deinem code auch meiner meinung nach nicht nötig eval zu benutzen. man kann strings auch so zusammen setzen ohne eval
edit oh da war jemand schneller ^^
|
|
|
Doppler |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 20.07.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 20.07.2013, 15:01
Titel:
|
 |
Schonmal danke für die schnellen Antworten.
Tut mir leid, ich bin ziemlicher Matlab-Anfänger und vor allem was das automatische Durchlaufen meiner Dateien betrifft, sehr unwissend. Mein Betreuer hat mir einen Code mit solchen evals vorgeschlagen.
Harald, wenn ich statt des ersten s= und eval(s) deinen Vorschlag eingebe
wird keine Datei geladen. Hab ich das richtig verstanden, dass das eigentlich der Ersatz ohne eval wäre? Und welchen Vorteil hat die "data"-Struktur?
Die Fehlermeldung zum save ist einfach nur.
Zitat: |
Error using Probe1_Mean_Korrektur (line 27)
Error: Unexpected MATLAB expression. |
Das hilft leider nicht sehr viel weiter. Ich könnte mir vorstellen, dass es nicht genug oder zu viele Anführungszeichen sind.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.07.2013, 17:38
Titel:
|
 |
|
 |
|
Hallo,
Zitat: |
Mein Betreuer hat mir einen Code mit solchen evals vorgeschlagen. |
Man kann an verschiedensten Stellen nachschlagen, dass EVAL nach Möglichkeit vermieden werden sollte - auf gomatlab ebenso wie beispielsweise auch in einem Blog von Loren Shure
http://blogs.mathworks.com/loren/2006/01/04/more-in-eval/
Zitat: |
... wird keine Datei geladen. |
Das würde mich aber sehr verwundern. Es sollte eine Struktur data entsehen, deren Felder alle in der .mat-Datei enthaltenen Variablen sind, die auf mean enden.
Zitat: |
Und welchen Vorteil hat die "data"-Struktur? |
Dass du nicht viele einzelne Variablen im Workspace herumliegen hast, sondern nur eine. Die Felder kann man bequem mit FIELDNAMES durchlaufen.
Zitat: |
Error: Unexpected MATLAB expression. |
Das ist dann ein schlichter Syntaxfehler. Mit "normalen" Befehlen kann man die leicht erkennen, weil sie im Editor hervorgehoben werden. Mit eval ist es dagegen sehr schwierig, da durchzublicken.
Ein Tipp: wenn du schon mit EVAL arbeitest, verwende mal DISP statt EVAL. Dann sieht man wenigstens, was genau EVAL ausführen würde, und kann so erkennen, wo das Problem liegt - in dem Fall ein fehlendes ' zwischen Dateiname und Komma.
Grüße,
Harald
|
|
|
Doppler |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 20.07.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 21.07.2013, 10:58
Titel:
|
 |
Super! Das speichern klappt jetzt. Es haben noch zwei ' gefehlt und ich konnte das mit Hilfe von DISP (bzw. der gleichen Anzeige in meinem Command Window beim Ausführen) herausfinden.
Der Save-Befehl sieht jetzt so aus:
(Die evals habe ich noch behalten, damit ich nicht alles umschreiben muss, aber das nächste Mal kann ich mich auf die Datenstruktur stützen.)
Logischerweise speichert mir der Befehl jetzt die Variable 'intData' als Datei, nicht aber die Variablen von intData direkt. Gibt es eine einfach Möglichkeit sozusagen intData in die Datei auszuschütten, um diesen Zwischenschritt beim späteren Zugriff zu vermeiden? (Also alle Variablen von intData direkt in die Datei schreiben.)
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.07.2013, 11:12
Titel:
|
 |
Hallo,
ich bin mir nicht sicher, ob ich die Frage verstehe.
Geht es dir darum, im Falle einer Struktur intData nicht die Struktur an sich, sondern die darin enthaltenen Felder in der .mat-Datei abzuspeichern? Dann hilft die Doku:
Zitat: |
save(filename, '-struct', structName, fieldNames) stores
the fields of the specified scalar structure as individual variables
in the file. |
Ansonsten bitte nochmal genauer erklären:
- zwischen Datei, Variable, und Felder einer Struktur unterscheiden
- was heißt hier "ausschütten"?
- welcher Zwischenschritt soll vermieden werden?
Grüße,
Harald
|
|
|
Doppler |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 20.07.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 21.07.2013, 11:23
Titel:
|
 |
Ich hab ne Lösung gefunden, nicht schön, aber für meine Zwecke reicht das erstmal.
Vielen Dank also!
|
|
|
|
|
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.
|
|