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

num2str gibt andere Zahl aus als gewünscht

 

dustdent

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2010, 19:59     Titel: num2str gibt andere Zahl aus als gewünscht
  Antworten mit Zitat      
Hallo,

gebe ich im Command Windows den Befehel
Code:
fprintf('%06.0f \n',5)

ein erhalte ich in der Ausgabe
000005

Diese Ausgabe würde ich nun gerne per disp als Text ausgeben.
Wenn der Befehl jedoch lautet
Code:

dann wird eine 8 ausgegeben. Ich hätte aber gerne die 000005 als Text.

Ich programmiere nämlich eine Funktion, und am Ende soll dann z. B. dastehen:

Das Ergebnis ist 000005!

Ich kann also auch nicht einfach ein Semikolon nach der 000005 setzen (was verhindern würde, dass eine 8 geschrieben wird), weil ja das Ausrufezeichen noch in den disp-Befehl hineinkommt.

Viele Grüße,
dustdent


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.12.2010, 22:44     Titel: Re: num2str gibt andere Zahl aus als gewünscht
  Antworten mit Zitat      
Hallo dustdent,

[quote]
gebe ich im Command Windows den Befehel
Code:
fprintf('%06.0f \n',5)

ein erhalte ich in der Ausgabe
000005

Diese Ausgabe würde ich nun gerne per disp als Text ausgeben.[quote]
Es macht keinen Unterschied, ob Du per FPRINTF oder DISP ins Command Window schreibst: Beides gibt einen Text aus.
Wenn es aber nun doch irgend einen Grund gibt, DISP aufzurufen, kannst Du den dazu nötigen String per SPRINTF erstellen.

Zitat:

Wenn der Befehl jedoch lautet
Code:

dann wird eine 8 ausgegeben.

Das ist merkwürdig. FPRINTF gibt eigentlich 6 zurück -die Anzahl der erzeugten Characters, also wird damit durch NUM2STR der String '6'.
Woher stammt dann eine 8 ?!

Zitat:
Ich programmiere nämlich eine Funktion, und am Ende soll dann z. B. dastehen:
Das Ergebnis ist 000005!
Ich kann also auch nicht einfach ein Semikolon nach der 000005 setzen (was verhindern würde, dass eine 8 geschrieben wird), weil ja das Ausrufezeichen noch in den disp-Befehl hineinkommt.

Ich habe keine Ahnung, was dies bedeuten könnte.

Versuche doch mal das:
Code:
fprintf('Das Ergebnis ist %06.0f!\n', 5)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 02.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2010, 22:47     Titel:
  Antworten mit Zitat      
Hallo erstmals,

dein Problem ist, dass der Rückggabewert von fprintf nicht die Zahl ist,die du rausschreibst, sondern die Bytes die geschrieben werden. In deinem Fall werden 8 Byte geschrieben.

Die Ausgabe 00005 musst du irgendwie anders lösen.

lg
Daniel
Private Nachricht senden Benutzer-Profile anzeigen
 
dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 02.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2010, 22:56     Titel:
  Antworten mit Zitat      
sooo

Noch eine Lösungsmöglichkeit..

Der Befehl sprintf gibt einen string zurück,funktioniert sonst gleich
den string kannst du mit disp dann ausgeben

meinstring = sprintf('%06.0f \n',5)
disp(meinstring)


lg
Daniel
Private Nachricht senden Benutzer-Profile anzeigen
 
dustdent

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2010, 00:51     Titel:
  Antworten mit Zitat      
Vielen Dank für eure Antworten!

dany2k3k hat Folgendes geschrieben:

Der Befehl sprintf gibt einen string zurück,funktioniert sonst gleich
den string kannst du mit disp dann ausgeben


Das hat super geklappt, vielen Dank.

Ich möchte nun einen Wert ausgeben, der vorne auf 3 Stellen Nullen auffüllt und gleichzeitig auf zwei Nachkommastellen rundet.

Also aus 4,678 soll z. B. 004,68 werden

Ich hätte mir nun vorstellen können, dass das mit
sprintf('%03.2f',4.678)
funktioniert. Diese Funktion hat aber leider keine Auswirkungen auf die Vorkommastellen.
Hat jemand eine Idee wie ich das realisieren kann?


Außerdem habe ich noch folgendes Problem:

Ich lasse in meiner Funktion eine Gleichung ausführen
I = P / U ;

Der entstehende Vektor I wird mir dann im Command Window als "ans = ..." ausgegeben, obwohl ich ein Semikolon gesetzt habe! Was mache ich denn da falsch?

Viele Grüße
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.12.2010, 03:48     Titel:
  Antworten mit Zitat      
Hallo dustdent,

Zitat:
Ich möchte nun einen Wert ausgeben, der vorne auf 3 Stellen Nullen auffüllt und gleichzeitig auf zwei Nachkommastellen rundet. Also aus 4,678 soll z. B. 004,68 werden

Code:
sprintf('%06.2f', 4,678)

Die "6" ist dabei die Anzahl der gesamten Zeichen, einschließlich Dezimal-Punkt.

Zitat:

I = P / U ;
Der entstehende Vektor I wird mir dann im Command Window als "ans = ..." ausgegeben, obwohl ich ein Semikolon gesetzt habe!

Das glaube ich nicht. Das "ans = ..." kommt von einer anderen Zeile.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.12.2010, 15:05     Titel:
  Antworten mit Zitat      
Hallo dustdent,

Nachtrag:
Code:
sprintf('%06.2f', 4.678)

Der Dezimal-Punkt ist natürlich ein Punkt, ich hatte aber "4,678" geschrieben.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
dustdent

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2010, 01:45     Titel:
  Antworten mit Zitat      
Vielen Dank!!
Hat alles geklappt.

Danke nochmals

Viele Grüße
dustdent
 
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.