Programma che legge file di testo e calcola la media

di il
7 risposte

Programma che legge file di testo e calcola la media

Ciao! Devo creare un programma Matlab che permette la lettura di alcuni file di testo .txt in ingresso e calcolare la media dei suoi valori. Mi spiego meglio... Ho dei file testo con 3 colonne A B C e ho scritto un programma per la lettura in ingresso e adesso come devo fare per poter selezionare solo una colonna e calcolare la media dei valori corrispondenti??

7 Risposte

  • Re: Programma che legge file di testo e calcola la media

    Prima di tutto devi far leggere il file a matlab. Puoi usare la funzione textread, così
    M=textread('nomefile.txt');
    in M matlab memorizzerà tutti i valori contenuti nel file di testo, nel tuo caso sarà una matrice con tre colonne.
    A questo punto estrai la colonna che ti serve, se A è la prima colonna, farai così:
    A=M(:,1)
    i due punti dicono a matlab di considerare tutte le righe, l'1 gli indica la prima colonna.
    Puoi fare lo stesso con B e con C, andando a selezionare la colonna che ti interessa.
    A questo punto A, B e C saranno 3 vettori.
    Per fare la media di un vettore puoi usare la funzione mean:
    media=mean(A) ti restituirà la media del vettore A.
  • Re: Programma che legge file di testo e calcola la media

    Ok grazie ho capito come funziona! Ho un altro problema però... Il file di testo non è 1 solo ma ho scritto una parte di programma che permette di selezionare la cartella dove ci sono i file testo e poi successivamente sceglierli. Lo scrivo qui:

    clear all;
    SelectedFiles=[];
    if exist('DirString.mat','file'),
    load('DirString.mat','-mat');
    DirString=uigetdir(DirString);
    else
    DirString=uigetdir;
    end
    if DirString==0,
    return
    else
    MaskString='*';
    while 1,
    MaskString=input(['Maschera [' MaskString '] (- termina): '],'s');
    if strcmp(MaskString,'-'),
    break;
    end
    if isempty(MaskString),
    MaskString='*';
    end
    d = dir([DirString '\' MaskString '.txt']);
    str = {d.name};
    if ~isempty(str),
    [Scelta, OK] = listdlg('PromptString','Selezionare i files:', 'SelectionMode','multiple', 'ListString',str, ...
    'ListSize', [500 300]);
    SelectedFiles=[SelectedFiles; d(Scelta)];
    end
    end

    dove DirString è il percorso della cartella e in SelectedFiles vanno i file inseriti.
    Se poi voglio leggere il primo file scrivo:

    Tmp1=textread('DirString \ SelectedFiles(1).name');

    ma mi da errore! Come posso risolvere??? Grazie in anticipo
  • Re: Programma che legge file di testo e calcola la media

    Quale errore dà?
  • Re: Programma che legge file di testo e calcola la media

    L'errore è questo:

    ??? Error using ==> textread at 167
    File not found.

    Error in ==> media at 39
    Tmp1=textread('DirString \ SelectedFiles(1).name');
  • Re: Programma che legge file di testo e calcola la media

    Non devi mettere tutto tra virgolette, ma separare le variabili che contengono stringhe (come DirString) dalle stringhe che aggiungi (come la \) usando la stessa sintassi che usi in questa riga:

    d = dir([DirString '\' MaskString '.txt']);
  • Re: Programma che legge file di testo e calcola la media

    Grazie mille! Quel problema è risolto! L'altra parte del programma è il seguente

    Tmp1=textread([DirString '\' SelectedFiles(1).name]);
    Vds=Tmp1(:,VdsColumn); % Vds: righe=numero righe Vds, colonne=1
    Id=zeros(length(Tmp1(:,IdColumn)),length(SelectedFiles)); % inizializzazione a 0 di Id: righe=numero righe Id, colonne=numero file

    % ciclo for per riempire Vds e Id
    for file=1:length(SelectedFiles),
    Tmp=textread([DirString '\' SelectedFiles(file).name]); % caricamento file
    Id(:,file)=Tmp(:,IdColumn); % riempimento Id
    end

    % calcolo media e deviazione standard
    IdMedio=mean(Id);
    DevStd=std(Id);
    % salvataggio risultato
    caratteristica_iv=[Vds IdMedio DevStd];
    save caratteristica_iv

    mi da errore a questa riga: caratteristica_iv=[Vds IdMedio DevStd];
    l'errore è:
    ??? Error using ==> horzcat
    CAT arguments dimensions are not consistent.

    come posso fare?
  • Re: Programma che legge file di testo e calcola la media

    Vuol dire che stai cercando di concatenare nel vettore caratteristica_iv dei vettori di dimensioni diverse. Controlla le dimensioni di Vds, IdMedio e DevStd, per concatenarli orizzontalmente devono avere lo stesso numero di righe, altrimenti dà errore.
Devi accedere o registrarti per scrivere nel forum
7 risposte