def VU_vfrdB(a, rng): N_len = int(a.length) ca = a.otherEmpty.fill(0.0) fftType = {'cvview_d': 'ccfftip_d', 'cvview_f': 'ccfftip_f'}[ca.type] fft = pv.FFT(fftType, N_len, 1, pv.VSIP_FFT_FWD, 0, 0) ra = ca.realview ia = ca.imagview ta = a.cloneview s = ta.stride pv.copy(a, ra) fft.dft(ca) pv.cmagsq(ca, ra) maxv = ra.maxval minv = maxv * rng pv.clip(ra, minv, maxv, minv, maxv, ra) Nlen = int(N_len / 2) if N_len % 2: ta.putlength(Nlen + 1) ra.putlength(Nlen + 1) ta.putoffset(Nlen * s) pv.copy(ra, ta) ra.putlength(Nlen) ta.putlength(Nlen) ta.putoffset(a.offset) ra.putoffset(Nlen + 1) pv.copy(ra, ta) else: pv.copy(ra, ta) ta.putlength(Nlen) a.putlength(Nlen) ta.putoffset(Nlen * s) pv.swap(ta, a) a.putlength(N_len) a.log10 a *= 10.0
def VU_vfrdB(a,rng): N_len=int(a.length) ca=a.otherEmpty.fill(0.0) fftType={'cvview_d':'ccfftip_d','cvview_f':'ccfftip_f'}[ca.type] fft = pv.FFT(fftType,N_len,1,pv.VSIP_FFT_FWD,0,0) ra = ca.realview ia = ca.imagview ta = a.cloneview s = ta.stride pv.copy(a,ra) fft.dft(ca) pv.cmagsq(ca,ra) maxv = ra.maxval minv = maxv * rng pv.clip(ra,minv,maxv,minv,maxv,ra) Nlen = int(N_len/2) if N_len%2: ta.putlength(Nlen+1) ra.putlength(Nlen+1) ta.putoffset(Nlen * s) pv.copy(ra,ta) ra.putlength(Nlen) ta.putlength(Nlen) ta.putoffset(a.offset) ra.putoffset(Nlen+1) pv.copy(ra,ta) else : pv.copy(ra,ta) ta.putlength(Nlen) a.putlength(Nlen) ta.putoffset(Nlen * s) pv.swap(ta,a) a.putlength(N_len) a.log10 a *= 10.0
def scale(gram_data): f={'cmview_d':'mview_d','cmview_f':'mview_f'} assert gram_data.type in ['cmview_d','cmview_f'], 'gram_data must be complex float matrix' M=gram_data.collength; N=gram_data.rowlength; t=f[gram_data.type] gram=pv.create(t,M,N,'ROW') pv.cmagsq(gram_data,gram) gram += (1.0-gram.minval) gram.log10 gram *= 256.0/gram.maxval return center(gram)
def scale(gram_data): f = {'cmview_d': 'mview_d', 'cmview_f': 'mview_f'} assert gram_data.type in ['cmview_d', 'cmview_f' ], 'gram_data must be complex float matrix' M = gram_data.collength N = gram_data.rowlength t = f[gram_data.type] gram = pv.create(t, M, N, 'ROW') pv.cmagsq(gram_data, gram) gram += (1.0 - gram.minval) gram.log10 gram *= 256.0 / gram.maxval return center(gram)
dataOut = pv.create('vview_f',N) spect_avg = pv.create('vview_f',int(N/2) + 1) spect_new = pv.create('vview_f',int(N/2) + 1) state = pv.Rand('NPRNG',N) fft=pv.FFT('rcfftop_f',(N,1,0,0)) b = [0.0234, -0.0094, -0.0180, -0.0129, 0.0037, 0.0110, -0.0026, -0.0195, -0.0136, 0.0122, 0.0232, -0.0007, -0.0314, -0.0223, 0.0250, 0.0483, -0.0002, -0.0746, -0.0619, 0.0930, 0.3023, 0.3999, 0.3023, 0.0930, -0.0619, -0.0746, -0.0002, 0.0483, 0.0250, -0.0223, -0.0314, -0.0007, 0.0232, 0.0122, -0.0136, -0.0195, -0.0026, 0.0110, 0.0037, -0.0129, -0.0180 ,-0.0094, 0.0234] fir = pv.FIR('fir_f',pv.listToJv('vview_f',b),'NONE',D*N,D,'NO') spect_avg.fill(0.0) for i in range(avg): state.randu(dataIn) pv.add(-.5,dataIn,dataIn) fir.flt(dataIn,dataOut) fft.dft(dataOut,dataFFT) pv.cmagsq(dataFFT,spect_new) pv.add(spect_new,spect_avg,spect_avg) pv.mul(1.0/avg,spect_avg,spect_avg); #print("spect_avg =");spect_avg.mprint('%.4f') x=spect_avg.empty.ramp(0,1.0/(spect_avg.length-1)) pyplot.plot(x.list,spect_avg.list) pyplot.title('Decimation 2') pyplot.ylabel('Not Normalized') pyplot.show()