Mkdir e saveas

di il
6 risposte

Mkdir e saveas

Ciao a tutti, avrei un problema.
Vorrei creare un codice che, per ogni singola run, mi crea una cartella "numerata" (es. prova1,prova2, ecc) al cui interno mi viene salvato un plot;
mi spiego meglio:
simulazione 1 crea prova1 e mi salva dentro il plot
simulazione 2 crea prova2 e mi salva dentro il plot
...

Sarebbe l'ideale non dover usare for in quanto il tutto va poi inserito in un codice abbastanza pesante.

Per adesso sono riuscito a fare la parte in cui mi crea le varie cartelle, ma usando poi saveas per salvare il plot ci sono dei problemi in quanto ad ogni cartella non corrisponde un plot.

Grazie in anticipo per qualsiasi aiuto.

PS il codice di prova è il seguente:

foldername = fullfile(pwd, sprintf('prova%02', k));
if exist(foldername, 'dir')

mkdir("prova"+k);

end
k = k+1;

figure
plot(rand(10,1))
picturename = fullfile(foldername, '1.jpg');
saveas(gcf,picturename,'jpg');

6 Risposte

  • Re: Mkdir e saveas

    Ci sono alcuni errori nel codice che hai pubblicato:

    In:
    
    foldername = fullfile(pwd, sprintf('prova%02', k));
    
    la stringa che definisce il formato è errata, manca l'identificatore del "tipo" (una "d" per specificare "integer")
    
    foldername = fullfile(pwd, sprintf('prova%02d', k));
    
    La condizione nel blocco "if" è errata:
    
    if exist(foldername, 'dir')
       mkdir("prova"+k);
    end
    
    impostata così crea la directory se la directory già esiste, devi invertirla aggiungendo "~":
    
    if(~exist(foldername, 'dir')
       mkdir("prova"+k);
    end
    
    nel blocco "if" dovresti anche gestire (nella parte "else" che, al momento manca, il caso nel quale le directory esista già.

    Per quanto riguarda la parte relativa al plotting ed al salvataggio, non sembrano esserci problemi, dovresti essere più chiaro nella spiegazione degli errori che incontri e, soprattutto, provare ad eseguire il codice in modalità debug.

    Da ultimo, non è chiaro cosa intendi con Sarebbe l'ideale non dover usare for in quanto il tutto va poi inserito in un codice abbastanza pesante.

    L'uso o meno di un loop dipende dai grafici che vuoi salvare e come / quando questi vengono creati dal tuo codice.

    In mancanza di altre informazioni / porzioni d codice significative, non si può aggiungere altro
  • Re: Mkdir e saveas

    Grazie mille.
    Colgo l'occasione per chiedere se è possibile creare una matrice random (4x4) di numeri compresi tra 0 ed 1(estremi esclusi) la cui somma orizzontale per ogni riga sia pari ad uno.
  • Re: Mkdir e saveas

    Puoi provare a:
    [*] creare la matrice (4 x 4) di numeri random
    [*] calcolare la somma dei valori di ogni riga
    [*] normalizzare i valori di ogni riga per il valore della loro somma
  • Re: Mkdir e saveas

    ask_raf ha scritto:


    Puoi provare a:
    [*] creare la matrice (4 x 4) di numeri random
    [*] calcolare la somma dei valori di ogni riga
    [*] normalizzare i valori di ogni riga per il valore della loro somma
    L'ultimo punto come potrei farlo?
  • Re: Mkdir e saveas

    Ho scritto male l'ultimo punto:

    "normalizzare i valori di ogni riga dividendoli per il valore della loro somma"
  • Re: Mkdir e saveas

    ask_raf ha scritto:


    Ho scritto male l'ultimo punto:

    "normalizzare i valori di ogni riga dividendoli per il valore della loro somma"
    Così facendo non andrei a creare 4 vettori di somme che poi, eventualmente, dovrei unire per creare una nuova matrice?
Devi accedere o registrarti per scrivere nel forum
6 risposte