Re: [Eserczio in MatLab]

Messaggioda Gian123 » 30/01/2015, 13:01

apatriarca ha scritto:Ok, in effetti stavo allora cercando di risolvere il problema sbagliato.. :) Puoi provare allora qualcosa come il seguente:
Codice:
M = [1 2;1 3;1 4; 2 1; 3 1; 3 2 ;4 1; 4 2; 4 3];
counts = arrayfun(@(t) nnz(M(:,2)==t), M(:,1));
y = 2;
M2 = M(counts > y, :);

Nota come adesso sto eseguendo la funzione in arrayfun per ogni elemento della prima colonna (il secondo argomento ad arrayfun) confrontando questo valore con quelli presenti nella seconda colonna (test all'interno della funzione). Questo dovrebbe funzionare..


Assolutamente perfetto! immagino che il secondo caso che ti ho chiesto sia molto più complicato,vero?
Gian123
Starting Member
Starting Member
 
Messaggio: 6 di 12
Iscritto il: 28/01/2015, 12:49

Re: [Eserczio in MatLab]

Messaggioda apatriarca » 31/01/2015, 18:53

Un metodo semplice potrebbe essere il seguente:
Codice:
M = [1 2;1 3;1 4; 2 1; 3 1; 3 2 ;4 1; 4 2; 4 3];
counts = arrayfun(@(t) nnz(M(:,2)==t), M);
y = 2;
M2 = M((counts(:,1) > 2) | (counts(:,2) > 2), :);

Questa soluzione è semplice da scrivere, ma probabilmente ci sono soluzioni più performanti.
apatriarca
Moderatore
Moderatore
 
Messaggio: 3681 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Precedente

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite