Quante volte si ripetono i valori in una riga - Matlab

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto UtenteKeen
0 2
Messaggi: 6
Iscritto il: 22 nov 2014, 14:47
0
voti

[1] Quante volte si ripetono i valori in una riga - Matlab

Messaggioda Foto UtenteKeen » 23 nov 2014, 16:23

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_/

Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere
0
voti

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

Messaggioda Foto UtenteDirtyDeeds » 23 nov 2014, 17:21

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.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.

Avatar utente
Foto UtenteKeen
0 2
Messaggi: 6
Iscritto il: 22 nov 2014, 14:47
0
voti

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

Messaggioda Foto UtenteKeen » 23 nov 2014, 17:45

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.

Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere
0
voti

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

Messaggioda Foto UtenteDirtyDeeds » 23 nov 2014, 18:19

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.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.

Avatar utente
Foto UtenteKeen
0 2
Messaggi: 6
Iscritto il: 22 nov 2014, 14:47
0
voti

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

Messaggioda Foto UtenteKeen » 23 nov 2014, 18:29

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_/


Torna a “Programmi applicativi: simulatori, CAD ed altro”