Verfasst am: 17.11.2016, 11:35
Titel: Schreiben der Name einer Variablen mit fprintf
Hallo Zusammen
Ich schlage mich zurzeit mit folgendem Problem herum:
Ich will mir mit Matlab eine Textdatei erstellen, die ich dann als Bewegungsprogramm für einen Roboter verwenden will. Dazu habe ich die Funktion Programm, welche aus einer Matrix A das .SRC-File erstellt. Soweit läuft auch alles, jetzt will ich jedoch folgendes Implementieren:
1. Die Textdatei soll unter dem Namen der Matrix abgespeichert werden. Daher NICHT Roboterprogramm.src und auch nicht A.src, sondern als 'Variablenname.src.
2. Will ich in einer Zeile den Text: DEF 'Variabelnname'() erstellen. Im Textfile lautet diese Zeile nun zB "DEF Èú dd ()" mit lauter Zeichen dazwischen.
Ich vermute mal, dass sich beide Probleme um folgende Fragestellung drehen: wie kriege ich den Namen eine Variablen in einer Funktion heraus?
Verfasst am: 17.11.2016, 13:04
Titel: Re: Schreiben der Name einer Variablen mit fprintf
Hallo AaronK,
Die Namen von Variablen sollten in einem Code niemals eine Rolle spielen. Solche Methoden machen den Code nur unwartbar und unübersichtlich. Wenn Du einen String mit einem Namen benötigst, nimm einen String, der den Namen enthält. Der Name einer Variablen ist dagegen ungeeignet zum Speichern von Informationen.
Code:
function Textfile = Programm(Data, Name)
FileName = fullfile(Folder, strcat(Name, '.src')); % Siehe unten
fid = fopen(FileName, 'w');
if fid == -1% IMMER prüfen, ob das Erstellen erfolgreich war error('Cannot open file: %s', FileName);
end ... fprintf(fid,'DEF %s ()\n', 'DEF', Name, '()');
... fclose(fid)
Wenn Du eine Variable an eine Funktion übergibst, ändert sich der lokal benutzte Name. Du kannst zwar per
inputname
den Namen herausfinden, der im aufrufenden Programm benutzt wurde, das ist aber sehr anfällig für Fehler und wie gesagt grundsätzlich eine schlechte Idee.
Bei der Verwendung von relativen File-Namen, kann man nie sicher sein, ob der aktuelle Ordner auch wirklich der ist, den man erwartet. Ein Timer- oder GUI-callback könnte den aktuellen Ordner ändern. Darum ist es immer sinnvoll, nur absolute File-Namen mit Pfad zu verwenden. Was dann hier für "Folder" verwendet wird, müsstest Du festlegen.
Gruß, Jan
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.