ux = unique(x);
if length(ux) == 1, counts = length(x);
else counts = hist(x,ux); end
ux = unique(x);
counts = zeros(size(ux));
for i=1:length(ux)
counts(i) = sum(x==ux(i));
end
ux = unique(x)
counts = arrayfun(@(t) nnz(x==t), ux);
ux2 = ux(counts>y);
M = [1 2; 1 3; 1 4; 2 1; 2 4; 3 2; 4 1; 4 3];
x = M(:,1);
counts = arrayfun(@(t) nnz(x==t), x);
y = 2;
M2 = M(counts > y, :);
apatriarca ha scritto:Non ti preoccupare. Notavo ora che il titolo della discussione è decisamente poco descrittiva e che andrebbe cambiato. Cerca in futuro di usare titoli migliori.
In realtà se questo è il tuo obiettivo finale potrebbe convenire agire in modo diverso:
- Codice:
M = [1 2; 1 3; 1 4; 2 1; 2 4; 3 2; 4 1; 4 3];
x = M(:,1);
counts = arrayfun(@(t) nnz(x==t), x);
y = 2;
M2 = M(counts > y, :);
Nota che in questo caso il numero di occorrenze è stato calcolato per ogni valore dell'array originale e non solo per i valori distinti.. In questo modo counts può essere usato direttamente per estrarre le righe che ti interessano dalla matrice originale. In caso contrario sarebbe stato un po' più complicato.
apatriarca ha scritto:Cioè? È possibile abbia in realtà sbagliato a scrivere qualcosa del 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, :);
Visitano il forum: Nessuno e 1 ospite