Ho questo ciclo seguente per un codice (che calcola gli istogrammi). Sto scrivendo in Matlab. Dato che sono nuovo di Matlab, non conosco metodi più veloci per farlo. Attualmente sto scrivendoottimizzazione di matlab per loop
for i=1:size(b)
a(b(i)) = a(b(i)) + 1;
end
Ci sono metodi più veloci per fare questo, preferibilmente quelli che non richiedono il ciclo for?
commento generale: 'size' non è la funzione giusta per quello che stai facendo ora, piuttosto usare [lunghezza] (http://www.mathworks.nl/help/matlab/ref/length.html) o [numel] (http://www.mathworks.nl/help/matlab/ref/numel.html). –
L'idea che i cicli for-loop siano inefficienti/lenti e che, se possibile, dovrebbero essere sostituiti è infondata. Anche se è possibile sostituire questo codice con qualcosa che è più veloce, probabilmente si risparmia solo una frazione di secondo. Questo non è il livello di ottimizzazione del codice di cui dovresti preoccuparti. – Kavka
@Kavka Per quanto riguarda questo tipo di ciclo for, sarei d'accordo. Un ciclo più complesso per manipolare matrici di grandi dimensioni varrebbe la pena di vettorializzare, giusto? Matlab è stato progettato per funzionare con le matrici: tutte le sue operazioni sulla matrice dovrebbero essere ottimizzate. – Derek