|
|
num2str gibt andere Zahl aus als gewünscht |
|
dustdent |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.12.2010, 19:59
Titel: num2str gibt andere Zahl aus als gewünscht
|
 |
Hallo,
gebe ich im Command Windows den Befehel
ein erhalte ich in der Ausgabe
000005
Diese Ausgabe würde ich nun gerne per disp als Text ausgeben.
Wenn der Befehl jedoch lautet
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
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 06.12.2010, 22:44
Titel: Re: num2str gibt andere Zahl aus als gewünscht
|
 |
|
 |
|
Hallo dustdent,
[quote]
gebe ich im Command Windows den Befehel
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
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:
Gruß, Jan
|
|
|
dany2k3k |

Forum-Fortgeschrittener
|
 |
Beiträge: 66
|
 |
|
 |
Anmeldedatum: 02.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.12.2010, 22:47
Titel:
|
 |
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
|
|
|
dany2k3k |

Forum-Fortgeschrittener
|
 |
Beiträge: 66
|
 |
|
 |
Anmeldedatum: 02.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.12.2010, 22:56
Titel:
|
 |
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
|
|
|
dustdent |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.12.2010, 00:51
Titel:
|
 |
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
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 07.12.2010, 03:48
Titel:
|
 |
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 |
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
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 07.12.2010, 15:05
Titel:
|
 |
Hallo dustdent,
Nachtrag:
Der Dezimal-Punkt ist natürlich ein Punkt, ich hatte aber "4,678" geschrieben.
Gruß, Jan
|
|
|
dustdent |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2010, 01:45
Titel:
|
 |
Vielen Dank!!
Hat alles geklappt.
Danke nochmals
Viele Grüße
dustdent
|
|
|
|
|
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.
|
|