WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Schreiben der Name einer Variablen mit fprintf

 

AaronK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2016, 11:35     Titel: Schreiben der Name einer Variablen mit fprintf
  Antworten mit Zitat      
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?

Danke vielmal für eure Hilfe
Aaron

Code:
function [ Textfile ] = Programm( A)

%% Dateikopf
fid=fopen(strcat('Roboterprogramm,'.src'),'w'); %Erstellen der Datei
fprintf(fid,'%s\n','&ACCESS RVP');
...
...
fprintf(fid,'%s %s %s \n','DEF',A,'()');
...
...
 


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.11.2016, 13:04     Titel: Re: Schreiben der Name einer Variablen mit fprintf
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.