Pagina 1 di 1

Quante volte si ripetono i valori in una riga - Matlab

Inviato: 23 nov 2014, 16:23
da Keen
Salve a tutti,

dovrei contare quante volte compaiono i valori di un array. Vi invio quello che sono riuscito a fare con un file .m di Matlab:

Codice: Seleziona tutto

A=[1 1 5 1 5];
i=1; j=1;
for i=1:5
    c=0;
    for j=1:5
        if A(i)==A(j)
        c=c+1;
        end     
    end
   fprintf('\t il valore %d è presente %d volte \n ', A(i), c)
end

La stampa a viedo restituisce:

il valore 1 è presente 3 volte
il valore 1 è presente 3 volte
il valore 5 è presente 2 volte
il valore 1 è presente 3 volte
il valore 5 è presente 2 volte

ma vorrei che fosse solo:
il valore 1 è presente 3 volte
il valore 5 è presente 2 volte

Potete aiutarmi? Grazie a tutti in anticipo!!
O_/

Re: Quante volte si ripetono i valori in una riga - Matlab

Inviato: 23 nov 2014, 17:21
da DirtyDeeds
Ecco una possibile soluzione:

Codice: Seleziona tutto

A=[1 1 5 1 5];
B = unique(A);
for i=B
   fprintf('\t il valore %d è presente %d volte \n ', i, sum(A==i));
end


Lascio a te capire come funziona: una volta che ti sembra di averlo capito, scrivi qui la tua interpretazione così ti dico se è corretta.

Re: Quante volte si ripetono i valori in una riga - Matlab

Inviato: 23 nov 2014, 17:45
da Keen
Grazie!
La funzione unique restitiusce un solo valore all'interno dell'array, quandi il vettore B verrà caricato dai valori 1 e 5, la funzione sum invece, ogni volta che il valore è pari ad 1 ne restituisce la somma di quelli trovati nel vettore A. Lo stesso vale per il valore 5. Perfetto!!!
Ti chiedo però un'altra cosa, se avessi voluto farlo senza la funzione unique e la funzione sum, come avrei dovuto fare? (continuando ad usare i cicli for ed if come avevo fatto in precedenza)

Grazie ancora.

Re: Quante volte si ripetono i valori in una riga - Matlab

Inviato: 23 nov 2014, 18:19
da DirtyDeeds
Keen ha scritto:Ti chiedo però un'altra cosa, se avessi voluto farlo senza la funzione unique e la funzione sum, come avrei dovuto fare?


Non lo devi assolutamente fare, perché sarebbe un pessimo modo di programmare in Matlab ;-) Matlab non è il C e ha le sue logiche di programmazione, diverse da quelle di molti linguaggi comuni: imparale fin dall'inizio, è fondamentale se vuoi usare Matlab con profitto nei tuoi successivi lavori.

Re: Quante volte si ripetono i valori in una riga - Matlab

Inviato: 23 nov 2014, 18:29
da Keen
Giusto, hai ragione :-) . Io però pensavo di fare un qualcosa che poi potessi anche girarmi su altri programmini tipo le macro di excel.. Grazie per il tuo aiuto
O_/