Matlab-salvare più grafici/plot contemporaneamente

di il
6 risposte

Matlab-salvare più grafici/plot contemporaneamente

Salve a tutti. Esiste in Matlab un comando che permette di salvare contemporaneamente diversi grafici ?
Se, ad esempio, attraverso il comando 'plot' sono stati generati 100 grafici, questi possono essere salvati in automatico?

Grazie in anticipo per l'aiuto.

6 Risposte

  • Re: Matlab-salvare più grafici/plot contemporaneamente

    Puoi salvare i grafici sia in formato "MatLab" (come file ".fig") sia come immagine della "window" (figure).
    Nel primo caso puoi ricaricare il file ".fig" ricreando in MatLab il grafico, questo, tra le altre cose, ti permette di recuperare i dati di input usati per plottare il grafico (sono memorizzati nei vettori / matrici XData, YData, ZData della property "Children" dell'axes - https://it.mathworks.com/help/matlab/ref/matlab.graphics.axis.axes-properties.html#d119e61906 e https://it.mathworks.com/help/matlab/ref/matlab.graphics.chart.primitive.line-properties.html#d119e635377).
    Nel secondo caso otterrai "solo" un'immagine (".jpg", ".bmp", ecc. - il formato puoi sceglierlo tu).
    Per salvare i grafici, in entrambi i modi, puoi usare la funzione "saveas" (); se hai creato i grafici in un loop, puoi inserire la chiamata a "saveas" direttamente nel loop; in questo caso dovrai "costruire" la stringa che contiene il nome de file.
    In alternativa, per salvare il grafico come immagine puoi usare la funzione "print" (https://it.mathworks.com/help/matlab/ref/print.html#bukyb6e-1-formattype).
  • Re: Matlab-salvare più grafici/plot contemporaneamente

    E come si fa a 'costruire' la stringa nel loop?
    Il codice da me scritto è il seguente:
    for j=1:m
    Plot(matrice(:, j), f(:, j), 'b.') ;
    grid on;
    Figure() ;
    end
  • Re: Matlab-salvare più grafici/plot contemporaneamente

    Nel codice che hai scritto, "Plot" e "Figure" dovrebbero essere scritti in minuscolo (non viene generato nessun messaggio di errore?)

    La chiamata a "figure" (con la "f" minuscola) dovrebbe essere fatta prima dell'istruzione "plot", altrimenti otterrai una "figure" vuota al termine del loop.

    Ci sono tanti per creare una stringa, nel tuo caso dipende da quale nome vuoi dare ai files.

    Come vorresti chiamare i vari files?

    Una (delle tante) possibilità potrebbe essere definire una radice comune per tutti i nomi ed aggiungervi un numero progressivo:
    
    
    file_name_root='grafico_numero_'
    for i=1:3
       file_name=[file_name_root num2str(i)]
    end
    
  • Re: Matlab-salvare più grafici/plot contemporaneamente

    Si, hai ragione riguardo i caratteri maiuscoli. Non me ne sono resa conto mentre lo scrivevo. Ad ogni modo se scrivo il codice in modo formalmente corretto, vengono generate tutte le figure che mi interessa avere. (ho messo il comando 'figure' prima del 'plot' e non mi genera più una figura vuota alla fine del loop come avevi detto tu).
    Comunque vorrei attribuire un nome al file e poi aggiungere un numero progressivo.
  • Re: Matlab-salvare più grafici/plot contemporaneamente

    Potresti provare ad usare il codice che ti ho proposto nella risposta precedente:

    [*] definisci una stringa "base" per il nome del file
    [*] crea la stringa ad ogni iterazione

    Partendo dal codice che hai pubblicato (ed avendo spostato la chiamata a "figure" prima del plot):
    
    % Stringa base del nome de file
    file_name_root='grafico_numero_'
    % Loop per il plottaggio
    for j=1:m
       figure() ;
       lot(matrice(:, j), f(:, j), 'b.') ;
       grid on;
       % Creazione del nome del file
       file_name=[file_name_root num2str(i)]
       % Istruzioni per il salvataggio dei files
       ...
    end
    
    in questo esempio, i nomi dei files vengono generati aggiungendo il numero progressivo dell'iterazione (i) usando la funzione "num2str" che converte un valore numerico nella stringa corrispondente.

    La concatenazione tra la stringa base del nome del file ed il valore numerico viene effettuata racchiudendo le due componenti della stringa tra parentesi quadre.
  • Re: Matlab-salvare più grafici/plot contemporaneamente

    Grazie mille
Devi accedere o registrarti per scrivere nel forum
6 risposte