On Sat, 14 May 2011 12:37:15 +0200, "M@T" <perini.mat...@gmail.com> wrote:
(Scusa lo sporchettamento di questa email...) Ho messo dei commenti per cercare di seguire le dimensioni della matrice. Se vuoi continuare questo post, per favore commenta anche le altre righe, perché non so cosa faccia la funzione 'wavelet()'. > matrixdata=np.array(matrix,dtype='int') > fase=np.zeros(matrixdata.shape) > for riga in range(matrixdata.shape[0]): > A=matrixdata[riga] > cw=wavelet(A) > cwt=cw.getdata() # NxM complex, giusto? > val=cwt.__abs__() # NxM real - puoi usare abs(cwt) credo In questa parte, che sembra la ciccia da ottimizzare: > x=np.arange(val.shape[1]) # [0,1,..M-1] > y=val.argmax(0) # vettore di M indici > for i in x: > fase[riga,i]=np.arctan2(cwt[y[i],x[i]].imag,cwt[y[i],x[i]].real) sono abbastanza sicuro (non 100%, perchè non ho capito bene cosa finisca in y) che tu possa scrivere questo come tipo: fase[riga] = np.arctan2(np.imag(cwt[?]), np.real(cwt[?])) in modo da far srotolare questo loop al C. cwt[x] dovrebbe essere qualcosa che ha la stessa forma di fase[riga]. Se capisco bene, y[i] è la posizione del valore di modulo massimo nella colonna i. x[i] è solo i invece. Tu vuoi prendere il numero complesso col modulo massimo per ogni colonna di cwt e salvarne la fase. Su questa pila di assunzioni e spolverando quello che ricordo, mi sembra tu possa fare: cwtmax = y.choose(cwt) fase[riga] = np.arctan2(np.imag(cwtmax), np.real(cwtmax)) dove y.choose (http://docs.scipy.org/doc/numpy/reference/generated/numpy.choose.html) a occhio sembra faccia il broadcast di dimensioni che serve a te. Ovvero, in un esempio fatto coi reali: a è una matrice casuale di numeri [-0.5..0.5]: array([[ 0.25130797, 0.21050261, -0.44835267, 0.2643408 ], [-0.30653352, -0.15036878, 0.34683264, 0.34859056], [ 0.32359279, -0.4676089 , -0.37165642, 0.08612426]]) y = abs(a).argmax(0) = array([2, 2, 0, 1]) (vettore degli indici delle righe del massimo di ogni colonna) y.choose(a) = array([ 0.32359279, -0.4676089 , -0.44835267, 0.34859056]) sembra quello che volevo: l'elemento col massimo valore assoluto per ogni colonna di a. C'è da vedere se quello che volevo io era la stessa cosa che volevi tu... :) -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python