@@ -1422,14 +1422,15 class SpectralMoments(Operation): | |||||
1422 | def run(self, dataOut, proc_type=0): |
|
1422 | def run(self, dataOut, proc_type=0): | |
1423 |
|
1423 | |||
1424 | absc = dataOut.abscissaList[:-1] |
|
1424 | absc = dataOut.abscissaList[:-1] | |
1425 | noise = dataOut.noise |
|
1425 | #noise = dataOut.noise | |
1426 | nChannel = dataOut.data_pre[0].shape[0] |
|
1426 | nChannel = dataOut.data_pre[0].shape[0] | |
1427 | data_param = numpy.zeros((nChannel, 4 + proc_type*3, dataOut.data_pre[0].shape[2])) |
|
1427 | nHei = dataOut.data_pre[0].shape[2] | |
|
1428 | data_param = numpy.zeros((nChannel, 4 + proc_type*3, nHei)) | |||
1428 |
|
1429 | |||
1429 | if proc_type == 1: |
|
1430 | if proc_type == 1: | |
1430 | fwindow = numpy.zeros(absc.size) + 1 |
|
1431 | fwindow = numpy.zeros(absc.size) + 1 | |
1431 |
|
|
1432 | b=64 | |
1432 | b=16 |
|
1433 | #b=16 | |
1433 | fwindow[0:absc.size//2 - b] = 0 |
|
1434 | fwindow[0:absc.size//2 - b] = 0 | |
1434 | fwindow[absc.size//2 + b:] = 0 |
|
1435 | fwindow[absc.size//2 + b:] = 0 | |
1435 | type1 = 1 # moments calculation |
|
1436 | type1 = 1 # moments calculation | |
@@ -1457,9 +1458,11 class SpectralMoments(Operation): | |||||
1457 |
|
1458 | |||
1458 | if proc_type == 1: |
|
1459 | if proc_type == 1: | |
1459 | dataOut.moments = data_param[:,1:,:] |
|
1460 | dataOut.moments = data_param[:,1:,:] | |
1460 | dataOut.data_dop = data_param[:,0] |
|
1461 | #dataOut.data_dop = data_param[:,0] | |
|
1462 | dataOut.data_dop = data_param[:,2] | |||
1461 | dataOut.data_width = data_param[:,1] |
|
1463 | dataOut.data_width = data_param[:,1] | |
1462 | dataOut.data_snr = data_param[:,2] |
|
1464 | # dataOut.data_snr = data_param[:,2] | |
|
1465 | dataOut.data_snr = data_param[:,0] | |||
1463 | dataOut.data_pow = data_param[:,6] # to compare with type0 proccessing |
|
1466 | dataOut.data_pow = data_param[:,6] # to compare with type0 proccessing | |
1464 | dataOut.spcpar=numpy.stack((dataOut.data_dop,dataOut.data_width,dataOut.data_snr, data_param[:,3], data_param[:,4],data_param[:,5]),axis=2) |
|
1467 | dataOut.spcpar=numpy.stack((dataOut.data_dop,dataOut.data_width,dataOut.data_snr, data_param[:,3], data_param[:,4],data_param[:,5]),axis=2) | |
1465 |
|
1468 | |||
@@ -1630,7 +1633,7 class SpectralMoments(Operation): | |||||
1630 | if (smooth is None): smooth = 0 |
|
1633 | if (smooth is None): smooth = 0 | |
1631 | if (type1 is None): type1 = 0 |
|
1634 | if (type1 is None): type1 = 0 | |
1632 | if (fwindow is None): fwindow = numpy.zeros(oldfreq.size) + 1 |
|
1635 | if (fwindow is None): fwindow = numpy.zeros(oldfreq.size) + 1 | |
1633 |
if (snrth is None): snrth = - |
|
1636 | if (snrth is None): snrth = -20.0 | |
1634 | if (dc is None): dc = 0 |
|
1637 | if (dc is None): dc = 0 | |
1635 | if (aliasing is None): aliasing = 0 |
|
1638 | if (aliasing is None): aliasing = 0 | |
1636 | if (oldfd is None): oldfd = 0 |
|
1639 | if (oldfd is None): oldfd = 0 | |
@@ -1779,6 +1782,7 class SpectralMoments(Operation): | |||||
1779 |
|
1782 | |||
1780 | gaussfn = __curvefit_koki(spec[xvalid], a, ww[xvalid]) |
|
1783 | gaussfn = __curvefit_koki(spec[xvalid], a, ww[xvalid]) | |
1781 | a = gaussfn[1] |
|
1784 | a = gaussfn[1] | |
|
1785 | converge = gaussfn[2] | |||
1782 |
|
1786 | |||
1783 | xvalid = numpy.arange(np) |
|
1787 | xvalid = numpy.arange(np) | |
1784 | spec2 = __GAUSSWINFIT1(a) |
|
1788 | spec2 = __GAUSSWINFIT1(a) | |
@@ -1787,7 +1791,7 class SpectralMoments(Operation): | |||||
1787 | power = a[0] * np |
|
1791 | power = a[0] * np | |
1788 | fd = a[1] |
|
1792 | fd = a[1] | |
1789 | sigma_fd = gaussfn[3][1] |
|
1793 | sigma_fd = gaussfn[3][1] | |
1790 | snr = max(power/ (max(a[3],n0) * len(oldxvalid)), 1e-20) |
|
1794 | snr = max(power/ (max(a[3],n0) * len(oldxvalid)) * converge, 1e-20) | |
1791 | w = numpy.abs(a[2]) |
|
1795 | w = numpy.abs(a[2]) | |
1792 | n1 = max(a[3], n0) |
|
1796 | n1 = max(a[3], n0) | |
1793 |
|
1797 | |||
@@ -1804,7 +1808,8 class SpectralMoments(Operation): | |||||
1804 | vec_power[ind] = power # to compare with type 0 proccessing |
|
1808 | vec_power[ind] = power # to compare with type 0 proccessing | |
1805 |
|
1809 | |||
1806 | if type1==1: |
|
1810 | if type1==1: | |
1807 | return numpy.vstack((vec_fd, vec_w, vec_snr, vec_n1, vec_fp, vec_sigma_fd, vec_power)) |
|
1811 | #return numpy.vstack((vec_fd, vec_w, vec_snr, vec_n1, vec_fp, vec_sigma_fd, vec_power)) | |
|
1812 | return numpy.vstack((vec_snr, vec_w, vec_fd, vec_n1, vec_fp, vec_sigma_fd, vec_power)) # snr and fd exchanged to compare doppler of both types | |||
1808 | else: |
|
1813 | else: | |
1809 | return numpy.vstack((vec_snr, vec_power, vec_fd, vec_w)) |
|
1814 | return numpy.vstack((vec_snr, vec_power, vec_fd, vec_w)) | |
1810 |
|
1815 | |||
@@ -1837,7 +1842,7 class SpectralMoments(Operation): | |||||
1837 | stdv = numpy.sqrt(SUMSQ/J - numpy.power(SUM/J,2)) |
|
1842 | stdv = numpy.sqrt(SUMSQ/J - numpy.power(SUM/J,2)) | |
1838 | return RNOISE, stdv |
|
1843 | return RNOISE, stdv | |
1839 |
|
1844 | |||
1840 |
def __get_noise1(self, power, fft_avg, TALK= |
|
1845 | def __get_noise1(self, power, fft_avg, TALK=0): | |
1841 | ''' |
|
1846 | ''' | |
1842 | Rutina para cálculo de ruido por alturas(n0). Similar a IDL |
|
1847 | Rutina para cálculo de ruido por alturas(n0). Similar a IDL | |
1843 | ''' |
|
1848 | ''' |
General Comments 0
You need to be logged in to leave comments.
Login now