|
|
M-File innerhalb/außerhalb einer Schleife |
|
Divid |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2009, 11:02
Titel: M-File innerhalb/außerhalb einer Schleife
|
 |
|
 |
|
Ein Teil meines Programms soll Folgendes erledigen:
1. Bestehende, statische .txt-Datei öffnen, zeilenweise in ein Cell-Array schreiben
2. im Cell-Array einen Platzhalter im .txt mit dem i-ten Zahlenwert aus einem Vektor ersetzen
3. Das Cell-Array wieder zeilenweise in eine andere .txt-Datei schreiben
1.-3. werden vom M-File INPUT ausgeführt.
Der Programmablauf sieht dann so aus:
bzw. die Funktion INPUT
Das eigentliche Problem liegt nun darin, dass die Funktion INPUT innerhalb der Schleife wunderbar funktioniert, aber bei der ersten Ausführung außerhalb der Schleife den Platzhalter nicht durch den 1-ten Zahlenwert des Vektors ersetzt. Das Produkt-txt wird geschrieben, nur der Platzhalter wird nicht ersetzt.
Ich konnte sehen, dass der Zwischenspeicher M_1 im Workspace korrekt mit dem 1-ten Wert des Vektors belegt wird. Im Cell-Array im Workspace wird dann aber der Platzhalter nicht durch num2str(M_1) ersetzt.
Woran kann es nun liegen, dass das M-File beim ersten Mal nicht funktioniert, in der Schleife aber schon?[/code]
|
|
|
|
|
tompie |

Forum-Guru
|
 |
Beiträge: 260
|
 |
|
 |
Anmeldedatum: 19.09.07
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: immer alles
|
 |
|
|
 |
|
Verfasst am: 12.11.2009, 14:25
Titel:
|
 |
Hallo,
zunächst mal: Du hast da einige grundsätzliche Probleme mit dem Programmierstil. Dein INPUT ist keine Funktion, sondern ein Skript. Globale Variablen sollte man grundsätzlich vermeiden. Aber das nur am Rande...
Hast Du überprüft, ob beim ersten Aufruf wirklich alles notwendigen Größen korrekt definiert sind? Außerdem: Wo kommt der Wert für lines her?
Hast Du mal geprüft, ob sich das ganze Problem nicht einfacher mit dem Befehl regexp lösen läßt?
Gruß tompie
|
|
|
Divid |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 12.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2009, 16:10
Titel:
|
 |
Mittlerweile bin ich soweit, dass alles so funktioniert wie es soll, wenn ich die Skripte von Hand ausführe bzw. die Eingaben per Hand mache. Führe ich das ganze automatisiert über das große Skript aus, gehts nicht. Dabei mache ich nichts anders, ich kopiere einfach den Inhalt der Skripte in die Eingabe und lasse die Zeilen ausführen. Das gibts doch nicht.
Ja, klar, mein Fehler, natürlich sind das Skripte und keine Funktionen. Und die Variablen habe ich global definiert, weil ich sonst eine Warnung von Matlab bekommen habe.
Wie bereits oben gesagt sind alle Variablen vorhanden, sonst würde es in der händischen Abarbeitung auch nicht funktionieren, oder sehe ich einfach den Wald vor lauter Bäumen nicht?
Und lines erhalte ich aus dem Zählen der Zeilen mit dem Wert der Zeilenanzahl. Ich habe dies nur aus dem Code entfernt und per % kenntlich gemacht, um nicht mehr Code als nötig zu zeigen.
|
|
|
Schrank |

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 10.07.08
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.11.2009, 18:15
Titel:
|
 |
Hallo Divid,
also nach meiner Ansicht gibt es überhaupt keinen Grund das du hier mit globalen Variablen arbeitest. Schließlich arbeitest du mit skripten und diese greifen auf den gleichen Workspace zu.
Was für eine Warnung bekommst du denn?
kopiere doch mal dein Skript "Input" an die Stellen wo du es jetzt aufrufst. Vielleicht ist die Fehlersuche dann einfacher.
Gruß Schrank
|
|
|
Divid |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 12.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.11.2009, 11:21
Titel:
|
 |
Mittlerweile funktioniert es, aber danke trotzdem für die Hilfe.
Wenn ich mich richtig erinnere, waren es Warnungen, dass in zukünftigen Matlabversionen die Variablen als global definiert sein müssen usw. Jedenfalls traten die Warnungen nach globaler Definition nicht mehr auf.
|
|
|
|
|
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.
|
|