Scrivere uno script matlab che realizzi alcune specifiche funzionali

di il
5 risposte

Scrivere uno script matlab che realizzi alcune specifiche funzionali

Salve a tutti,
Sono alle prese con un esame di informatica e, nonostante i più dicano sia una banalità, io proprio non riesco a venirne a capo.
Il compito prevede di leggere, scrivere e gestire file tramite le funzioni fprintf, textread, fscanf, fopen, fclose etc... Ora, sarà che ho inziato da poco e con poche se non nulle nozioni a riguardo, ma avrei bisogno di una spiegazione in quanto ho i giorni contanti per poter fare questo esame (che è l'ultimo) per evitare di dover fare iscrizioni all'anno fuoricorso e quant'altro.
Detto ciò, se qualcuno potesse dare uno sguardo e magari aiutarmi gliene sarei davvero grato.

5 Risposte

  • Re: Scrivere uno script matlab che realizzi alcune specifiche funzionali

    Avevo allegato una foto, ma non me lo permette; quindi riporto la traccia:
    all'interno di un file denominato Temperature.txt sono presenti le temperature medie giornaliere di quattro settimane registrete presso una città. Il formato del file "Temperature.txt" è fissato ed è il seguente:
    18 20 21 20 19 21 20
    17 22 21 23 16 15 14
    20 21 22 21 22 22 21
    22 22 22 21 21 23 21
    Dopo aver fatto inserire il nome del file e averlo letto attraverso l'utilizzo di una apposita funzione, denominata Leggi_File, si calcoli, attraverso una funzione, denominata Temp_Media, la temperature media di ogni settimana. A questo punto si scrivano le temp medie ottenute in un file denominato Temperature_Medie.txt. La funzione da utilizzare dovrà chiamarsi Scrivi_File. Attrverso una funzione Grafica_Temperature si realizzi un grafico a barre delle temp. medie.
    Consegnare:
    script pirncipale
    funzione Leggi_File
    funzione Temp_Media
    funzione Scrivi_File
    funzione Grafica_Temperature
  • Re: Scrivere uno script matlab che realizzi alcune specifiche funzionali

    L'esercizio è veramente molto semplice.

    Hai provato a scrivere qualche linea di codice?

    Hai qualche problema specifico nell'utilizzare le varie funzioni per la scritture / lettura dei files?

    Hai provato a leggere l'help delle varie funzioni?
  • Re: Scrivere uno script matlab che realizzi alcune specifiche funzionali

    Provo ad esporre quello che credo di aver capito di dover fare:
    Creo uno script in cui inserisco la matrice delle temperature e lo salvo come Temperature.txt.
    Per far inserire il nome scrivo, in un altro script, quello principale: Nome_File = input('inserisci il nome del file:','s')
    Ora, per farlo leggere creo la funzione Leggi_File (sempre in un altro script):
    function [temperature]=Leggi_File(Al)
    [temperature]=textread(Al);
    end
    questa, ammesso che sia fatta bene, penso debba essere richiamata nello script principale, che quindi diventa questo:
    Nome_File = input('inserisci il nome del file:','s');
    [Temperature]=Leggi_File(Nome_File);
    ora devo fare il programmino che fa le medie e vabbè..si fa...e poi anche questa funzione va richiamta nel principale. In questo modo ho:
    Nome_File = input('inserisci il nome del file:','s');
    [Temperature]=Leggi_File(Nome_File);
    Tmedie=Temp_Media(Temperature);
    A questo punto mi blocco, in quanto non ho capito come scrivere i risultati ottenuti nell'altro file .txt...cioè non so se devo crearlo io a priori oppure se la funzione fprint lo crea automaticamente
  • Re: Scrivere uno script matlab che realizzi alcune specifiche funzionali

    OK.

    Mi sembra che l'impostazione generale sia sostanzialmente corretta.

    La funzione "textread" è sconsigliata da MatLab (vedi help textread), in alternatica potresti usare "textscan".

    Per scrivere in un file di testo con la funzione "fprintf" devi prima "aprire" (creare) il file con la funzione "fopen", al termine devi "chiudere" il file con la funzione "fclose".

    Per ognuna delle operazioni che devi eseguire nelle varie funzioni ci sono diverse possibilità.

    Potresti creare lo script generale così:
    
    %
    % Primo modo per l'acquisizione del nome del file di input
    %    ==> utilizzo della funzione "input"
    
    % go_on=0;
    % while(~go_on)
    %    input_file=input('Insert input file name: ','s')
    %    if(isempty(input_file))
    %       disp('Input file name can not be an empty string')
    %    elseif(~exist(input_file))
    %       disp([input_file ': file not found'])
    %    else
    %       go_on=1;
    %    end
    % end
    
    %
    % Secondo modo per l'acquisizione del nome del file di input
    %    ==> utilizzo della funzione "uigetfile"
    go_on=0;
    while(~go_on)
       [input_file, pathname]=uigetfile('*.txt', 'Pick a Temperature file');
       if(input_file)
          go_on=1;
       end
    end
    % 
    [temp_mat]=Leggi_File(input_file)
    
    [medie_temp]=Temp_Media(temp_mat)
    
    Scrivi_File(medie_temp)
    
    Grafica_Temperature(medie_temp)
    
    
    Per le singole funzioni (ognuna di esse da salvare in un file separato con nome uguale al nome della funzione)

    Leggi_File.m
    
    function [temp_mat]=Leggi_File(input_file)
    
    % Primo modo per leggere il file in input
    temp_mat=load(input_file)
    
    % Secondo modo per leggere il file in input
    fp=fopen(input_file)
    temp_mat=cell2mat(textscan(fp,'%f%f%f%f%f%f%f'))
    fclose(fp)
    
    % Terso modo per leggere il file in input
    temp_mat=importdata(input_file)
    
    
    Temp_Media
    
    function [medie_temp]=Temp_Media(temp_mat)
    
    % Primo modo per calcolare le temperature medie
    medie_temp=mean(temp_mat,2)
    
    % Secondo modo per calcolare le temperature medie
    [n_row,n_col]=size(temp_mat)
    medie_temp=zeros(n_row,1)
    for i=1:n_row
       s=0;
       for j=1:n_col
          s=s+temp_mat(i,j);
       end
       medie_temp(i)=s/n_col;
    end
    
    
    Scrivi_File
    
    function Scrivi_File(medie_temp)
    
    % Primo modo per srivere le temperature medie
    save('Temperature_Medie.txt','medie_temp','-ascii')
    
    % Secondo modo per scrivere le temperature medie
    fp=fopen('Temperature_Medie.txt','wt')
    fprintf(fp,'%f\n',medie_temp)
    fclose(fp)
    
    
    Grafica_Temperature
    
    function Grafica_Temperature(medie_temp)
    bar(medie_temp)
    title('Media Temperature')
    xlabel('Settimana')
    ylabel('Temperature [C°]')
    
  • Re: Scrivere uno script matlab che realizzi alcune specifiche funzionali

    Grazie mille, sembra che inizi a capirci qualcosa.
Devi accedere o registrarti per scrivere nel forum
5 risposte