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

Hilfe bei fprintf (Leerzeichen entfernen)

 

bage86
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.11.13
Wohnort: ---
Version: R2013a Student
     Beitrag Verfasst am: 25.03.2014, 11:58     Titel: Hilfe bei fprintf (Leerzeichen entfernen)
  Antworten mit Zitat      
Hallo ich hoffe ihr könnt mir helfen. Ich möchte ein .txt Dokument erstellen in dem ich per Schleife einen festen string-Bestandteil mit einem variablen float verbinden möchte. das ganze vier mal pro Zeile. Wobei ich die nachkommastellen bestimmen möchte. Zusätzlich brauche ich einmalig am Anfang und Ende des skriptes eine andere Zeile.

Mein Code lautet:

Code:
fid = fopen('SPLINE_TROP_XML.txt','wt');
fprintf(fid,'%s\n','<Matrix3 NameX1="TG" NameX2="TRIM" NameX3="V" NameY="POWER">') ;
for z=1:size(G3,1)
    fprintf(fid,'%s%6.2f%s%6.2f%s%6.2f%s%6.0f%s\n','<Point X1="',G3(z,1),'"X2="',G3(z,2),'"X3="',G3(z,3),'"Y="',G3(z,4),'"/>') ;
end
fprintf(fid,'%s','</Matrix3>') ;
fclose(fid);


Soweit so gut die Datei sieht folgendermaßen aus:

https://www.dropbox.com/s/p1r7cbmf9mh3ms1/SPLINE_TROP_XML.txt

jetzt möchte ich aber, dass die Anführungszeichen DIREKT vor und hinter den entsprechenden Zahlen bei X1=, X2= etc stehen (siehe .txt Dokument)
Es werden aber automatisch führende Leerzeichen erzeugt, die ich nicht haben möchte.

Wie könnte ich das umgehen?

Gruß Bastian
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 25.03.2014, 12:04     Titel:
  Antworten mit Zitat      
Hallo,

das liegt am angegebenen Format:
Code:

Das bedeutet: schreibe mir eine Zahl raus, die 6 Stellen lang ist, eine Stelle geht für den Punkt drauf und 2 für Nachkommastellen. Das bedeutet also, dass vor dem Punkt 3 Stellen stehen müssen. Da musst du dir nun überlegen, was du wirklich haben willst und dann kann man dir helfen.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
bage86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.11.13
Wohnort: ---
Version: R2013a Student
     Beitrag Verfasst am: 25.03.2014, 12:14     Titel:
  Antworten mit Zitat      
Hallo

Vielen Dank für den Hinweis. Die 6 brauche ich damit im Prinzip nur beim dritten Eintrag, Bei den anderen komme ich mit 5 aus.

Allerdings ist das leider nicht konstant. Also manchmal habe ich eine und manchmal zwei Stellen vor dem Komma. Führungsnullen kommen nicht in Frage. So dass ich quasi immer die maximal vorhandenen Stellen vor dem Komma und fixe Nachkomastellen bauche.

Gruß Bastian
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 25.03.2014, 12:30     Titel:
  Antworten mit Zitat      
Hallo,

dann vielleicht mit führenden Nullen?
Code:
sprintf('%06.2f\n',8)

ans =

008.00


Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
bage86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.11.13
Wohnort: ---
Version: R2013a Student
     Beitrag Verfasst am: 25.03.2014, 12:32     Titel:
  Antworten mit Zitat      
Führungsnullen kommen leider nicht in Frage....

Gruß Bastian
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 25.03.2014, 12:46     Titel:
  Antworten mit Zitat      
Hallo,

dann fällt mir nur noch ein, hinten die Nullen dranzuhängen
Code:
sprintf('%6f\n',8)

ans =

8.000000

Aber das willst du ja vermutlich auch nicht, da du was von Nachkommastellen bestimmen geschrieben hast.
Wenn nur wichtig ist, dass es exakt 2 Nachkommastellen und beliebig viele Stellen vor dem Komma sein kann, dann vielleicht:
Code:


Falls das auch nicht das richtige ist: was soll denn bei dem Beispiel in der ersten Zeile passieren?
X1=" 8.00" ist ja nicht erwünscht. Was genau soll stattdessen da stehen? Vielleicht
X1= "8.00"?
X1="8.00"?

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
bage86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.11.13
Wohnort: ---
Version: R2013a Student
     Beitrag Verfasst am: 25.03.2014, 13:00     Titel:
  Antworten mit Zitat      
Zitat:
Code:


Danke, das wars. Very Happy Da hab ich wohl zu kompliziert gedacht Rolling Eyes
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.