Problema cifre significative

di il
3 risposte

Problema cifre significative

Buongiorno.
Devo importare una serie di dati da un file txt, che in seguito devo normalizzare perché sono una scala troppo grande, e riscrivere i dati normalizzati su un altro file txt. Il problema è che, normalizzando i dati, questi diventano numeri piccoli con tante cifre decimali e quando vado a riscriverli alcune di queste cifre vengono tagliate.

Qualche idea su come risolvere il problema?

Gtazie per l'aiuto

3 Risposte

  • Re: Problema cifre significative

    Potresti pubblicare un esempio dei dati che vuoi scrivere in un file di testo?

    Che funzione usi per scrivere i dati nel file di testo?
    Con la funzione "fprintf" puoi definire il numero di cifre da scrivere.

    Inoltre, se devi usare questi numeri solo in MatLab, puoi salvarli in un file ".mat" (con la funzione "save"); in questo modo non "perderai" nessuna cifra significativa.
    Potrai leggere il file ".mat" con la funzione "load"

    Per saperne di più:



  • Re: Problema cifre significative

    Ciao Raf, come sempre grazie per la risposta.

    Un esempio potrebbe essere tranquillamente 6.958900094030001e-01

    Il problema non è solo quando vado a scriverlo in un altro file, bensì MAtlab che non mifa apparire tutte le cifre decimali. Mi servirebbe poter trattare i dati in doppia precisione ma non capisco come si fa
  • Re: Problema cifre significative

    MatLab opera di default in doppia precisione; lo puoi verificare con il comando "whos"
    >> x=10/3
    x =
    3.3333
    >> whos
    Name Size Bytes Class Attributes
    x 1x1 8 double
    Per "vedere" un numero maggiore di cifre significative, puoi usare il comando "format" con le sue differenti opzioni:
    format SHORT Scaled fixed point format with 5 digits.
    format LONG Scaled fixed point format with 15 digits for double
    and 7 digits for single.
    format SHORTE Floating point format with 5 digits.
    format LONGE Floating point format with 15 digits for double and
    7 digits for single.
    format SHORTG Best of fixed or floating point format with 5
    digits.
    format LONGG Best of fixed or floating point format with 15
    digits for double and 7 digits for single.
    format SHORTENG Engineering format that has at least 5 digits
    and a power that is a multiple of three
    format LONGENG Engineering format that has exactly 16 significant
    digits and a power that is a multiple of three.
    ==>
    >> x=10/3

    x =

    3.3333

    >> format long
    >> x=10/3

    x =

    3.333333333333334
    (fai riferimento all'help "completo" per maggiori dettagli).

    Pupi trovare ulteriori informazioni qui:
    http://uk.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html

    Nello scrivere in un file di testo un numero, puoi specificare il numero di cifre decimali nel "formato", ad esempio:
    fprintf('%.15f\n',pi)
    scrive il numero pi-greco (pi) con 15 cifre decimali.

    Ad ogni modo, il modo più efficace per "salvare" dei numeri in un file è usare il comando / funzione "save".

    http://uk.mathworks.com/help/matlab/matlab_env/save-load-and-delete-workspace-variables.html
Devi accedere o registrarti per scrivere nel forum
3 risposte