Conversione virgola-punto

di il
3 risposte

Conversione virgola-punto

Salve a tutti.
Ho un file txt in cui ci sono numeri decimali ma al posto di essere separati da un punto sono separati dalla virgola. Quindi quando vado a caricare il file in Matlab mi crea due colonne separate per i numeri prima e dopo la virgola. Come posso risolvere questo problema e ottenere un unico file txt con gli stessi numeri decimali ma separati dal punto?

3 Risposte

  • Re: Conversione virgola-punto

    Si puo' fare tutto da codice, OVVIAMENTE, ma il sistema MIGLIORE, SE deve essere fatto una volta ogni tanto, e' farlo A MANO e dimenticarsi del problema.

    Tieni presente una cosa: quando si scrive un programma si sfruttano tutta una serie di CONVENZIONI che si suppongono ASSODATE.

    SE queste convenzioni vengono meno, RARAMENTE conviene mettere le mani nel codice.
    CONVIENE trovare un'accrocchio che RIPRISTINA le convenzioni. Un lavoro fatto a mano spesso e' sufficiente.
    SE questo dovesse essere fatto abbastanza spesso, quello che si fa e' realizzare un'applicazioncina A SE STANTE che RIPRISTINA le convenzione e che viene eseguita SEPARATAMENTE dall'applicazione principale.

    Questo, almeno come approccio FILOSOFICO.

    L'alternativa, quella ""sofisiticata"", e' far si che il programma, alla partenza, si accorga del formato del file, e' chiama una funzione che si occupa di fare le conversioni.

    Ad esempio, pensa ai programmi di grafica 3D che sono in grado di leggere file in formati diversi: e' IMPOSSIBILE fare la conversione a mano, MA l'applicazione contiene dei modulini che convertono OGNI formato di file supportanto nel formato interno richiesto. Dopo di che, la rimanente parte dell'applicazione continuera' a funzinare normalmente.
  • Re: Conversione virgola-punto

    Purtroppo non deve essere fatto una volta ogni tanto. Sono dati che arrivano da un sensore e vengono salvati in questo file txt. Per questo mi serve un modo via codice per renderli poi lavorabili.
  • Re: Conversione virgola-punto

    Se il file di input è semplicemente del tipo:
    
       19,855
       73,070
       41,849
       30,073
       45,748
       99,818
       92,538
       16,872
       46,177
       58,241
    
    potresti leggere il file con la funzione "textscan", sostituire la virgola con in punto con la funzione "strrep" e convertire il tutto in numero con, ad esempio, la funzione "num2str" o "cell2mat".
    
    fp=fopen('in_1.txt','rt')
    x=textscan(fp,'%s')
    fclose(fp)
    
    val_1=str2num(char(strrep(x{1},',','.')))
    
    val_2=cell2mat(strrep(x{1},',','.'))
    
Devi accedere o registrarti per scrivere nel forum
3 risposte