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

>> Zahlen-ausgabe : Tausender - Trennpunkte

 

stoxxii

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2015, 20:12     Titel: >> Zahlen-ausgabe : Tausender - Trennpunkte
  Antworten mit Zitat      
Halloo User Folks
Halloo Admins,

ich muß kurz dumm fragen dürfen : Rolling Eyes

gibt es Möglichkeit, große Zahlen wie 11.000
oder Mio-Zahlen : 7.500.000 so mit Trennpunkt für die "1000" darzustellen ...

oder wie es die Amis machen : 11´000 ...
oder soo ähnlich ...
Vielleicht geht es mit fprintf ??

vielen Dank für Tips & Tricks und Mühen vorab ...
Beste Grüße
stoxxii


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.05.2015, 20:16     Titel:
  Antworten mit Zitat      
Zitat:
Vielleicht geht es mit fprintf ??

vielleicht... was hast du denn versucht Smile mit fprintf geht ne ganze menge. wobei nur fprintf nicht ausreichen wird denke ich. entwerder man baut da noch n paar andere befehle ein oder muss das dann nochmal nachbearbeiten.
auf die schnelle würde mir eine lösung mit num2str strfind (zum dezimalpunkt suchen) und dann ner kleinen while schleife, die dann die punkte einfügt, einfallen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
stoxxii

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2015, 09:35     Titel: >> Thousand seperator
  Antworten mit Zitat      
Halloo Moderator,

habe in englishen Foren mal gegoogelt ... wenn ich das hier mal
so sagen darf ...

Einige arbeiten da mit einem Java-Script, oder Rolling Eyes
basteln , wie du sagst eine eigene Function mit while loop usw...

naja, ich dachte , es geht einfacher ...
bin eben selbst keine Mathematiker ... Crying or Very sad

grüße
stoxxii
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.05.2015, 14:27     Titel: Re: >> Zahlen-ausgabe : Tausender - Trennpunkte
  Antworten mit Zitat      
Hallo stoxxii,
Code:
S = sprintf('%.16g', pi * 1e12);
S(2, strfind(S, '.') - 4:-3:1) = char(39);
S = S(S ~= char(0)).';

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2015, 17:12     Titel: >> Danke erstmal
  Antworten mit Zitat      
Halloo Jan,

danke für den Programmier-Tip ... Wink

prima , dass du mir keine while-Loop eingebaut hast ...

kann es aber erst später zu Hause ausprobieren...

Grüße
stoxxii
 
stoxxii

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2015, 12:05     Titel: >> auch für mehrere Zahlen gleichzeitig möglich ???
  Antworten mit Zitat      
Halloo Jan,

so nun zum Feiertag hatte ich Zeit deine Lösungs-Variante
zu probieren... Für "pi " sieht das schon genial aus .... Wink

Aber ich wollte mal mehrere Zahlen in einer Spalte
mit dem "Thousand Seperator" darstellen und bekomme da leider keine Resultate .... Crying or Very sad

Code:
Vec = [11200 11300 11400 11500];

for k = 1:4
    Sv = sprintf('%.16g', Vec(k));
    Sv(2, strfind(Sv, '.') - 4:-3:1) = char(39);
    Sv = Sv(Sv ~= char(0)).'
end
Sv
 


Könntest du bitte nochmal draufschauen,
ob das auch für mehrere Zahlenwerte gleichzeitig darstellbar ist ??? Rolling Eyes

Danke vorab für Zeit & Mühen...
beste Grüße
stoxxii
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.05.2015, 21:42     Titel: Re: >> auch für mehrere Zahlen gleichzeitig möglich
  Antworten mit Zitat      
Hallo stoxxii,

Einzelne klar definierte Funktionen speichert man am besten in einer einzelnen Funktion, damit man sie dann leicht von überall aufrufen kann:
Code:
function S = ThousandSep(N, Sep)
if nargin < 2
  Sep = char(39);
end
S = sprintf('%.16g', N);
S(2, strfind(S, '.') - 4:-3:1) = Sep;
S = S(S ~= char(0)).'

Speicher dies im M-File "ThousandSep.m".

Du hast eine Schleife erstellt, in der Du das Ergebnis in jeder Iteration überschreibst. Mit dem Debugger kannst Du das gut überprüfen, wenn Du zeilenweise durch den Code gehst.

Wenn Du es nicht überschreiben möchtest, musst Du es in einem Array speichern. Da die Strings unterschiedlich lang sein können, ist ein Cell-String dafür am besten geeignet:
Code:
Vec = [11200 11300 11400 11500];

Sv = cell(size(Vec));
for k = 1:numel(Vec)
    Sv{k} = ThousandSep(Vec(k));
end

Gruß, Jan

Zuletzt bearbeitet von Jan S am 16.05.2015, 19:15, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
stoxxii

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2015, 09:37     Titel: >> Errors im Script
  Antworten mit Zitat      
Hallo Jan,

danke das du dir nochmal Zeit genommen hast ...ein kleines Script zu schreiben ...

Das wird dich jetzt etwas nerven ... Crying or Very sad

Leider bekomme ich diverse Errors ....

Könntest du mal dein Script überprüfen ... ??

Was sollte ich denn bitte bei Sep eingeben, beim Aufruf im Command-Window ???

Vec habe ich als N umgeschrieben, ändert aber nix...

Wäre nett , wenn du die beiden Errors beseitigen könntest ...

Das ich mit Matlab 6.5 R13 arbeite, sollte bei diesem Script nicht stören ...

Danke vorab...

Beste Grüße
stoxxii

_matlab__error__3_.JPG
 Beschreibung:

Download
 Dateiname:  _matlab__error__3_.JPG
 Dateigröße:  114.36 KB
 Heruntergeladen:  286 mal
_matlab__error__2_.JPG
 Beschreibung:

Download
 Dateiname:  _matlab__error__2_.JPG
 Dateigröße:  106.81 KB
 Heruntergeladen:  278 mal
_matlab__error__1_.JPG
 Beschreibung:

Download
 Dateiname:  _matlab__error__1_.JPG
 Dateigröße:  113.71 KB
 Heruntergeladen:  304 mal
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.05.2015, 14:23     Titel: Re: >> Errors im Script
  Antworten mit Zitat      
Hallo stoxxii,

Ich habe den geposteten Code überprüft: Es fehlte die letzte schließende Klammer bei:
Code:

Und hier habe ich noch ein Semikolon angehängt:
Code:
S = S(S ~= char(0)).';


Zitat:
Was sollte ich denn bitte bei Sep eingeben, beim Aufruf im Command-Window ???

Genau das, was Du laut Deiner Bildschirm-Fotos eingegeben hast.
Bildschirm-Fotos sind übrigens viel unpraktischer als die Fehlermeldungen direkt als Text zu posten.

Zitat:
Vec habe ich als N umgeschrieben, ändert aber nix...

Bitte erwähne nicht nur, dass Du etwas geändert hast, sondern poste den dazugehörigen Code. Ich kann nicht erraten, was Du da genau getan hast.

Du bekommst eine Meldung betreffend der Rekursion. Dann hast Du offenbar den Code-Teil mit der Schleifen auch in das M-File mit Namen ThousandSep eingefügt. Da gehört das aber nicht hinein.

Ein Problem bleibt aber in meinem Vorschlag: Die Separatoren werden nicht eingefügt, wenn die Zahl keine Nachkommastellen hat. Das ist natürlich unpraktisch.
Ich werde in Kürze eine umfassende Version erstellen und dann hier einen Link posten.

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: 24.05.2015, 21:13     Titel:
  Antworten mit Zitat      
Hallo Stoxxii,

Hier eine Funktion um Zahlen in Strings mit 1000er Separator zu konvertieren:
http://www.mathworks.com/matlabcent.....xchange/50968-thousandsep
Für Matlab 6.5 benötigst Du noch die Änderungen, die in einem Kommentar beschrieben ist.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2015, 15:23     Titel: >> Danke, habe noch anderes Script gefunden
  Antworten mit Zitat      
Halloo Jan,

vielen Dank nochmal für den abschließenden Tip... Wink

Ich hatte noch eine andere Alternative gefunden ...
weiß jetzt nicht genau , wie die hieß :
So etwa : >>Sep1000<<

wirklich genial ... aber etwas längeres Script ...
bis dann mal wieder ..
grüße
stoxxii
 
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.