halfwidth, resolution, window, mph=mph) try: print(len(p_freq)) print(len(p_power)) except NameError: data = ps_f.reader('clean_peaks') p_freq = data[0].ravel() p_power = data[1].ravel() # # Autocorrelation within window if window is not None: acorr = as_f.autocorr(spectral_power[window]) else: acorr = as_f.autocorr(spectral_power) freq_ac = np.arange(0, resolution * len(acorr), resolution) plt.figure() plt.plot(freq_ac, acorr) plt.show(block=False) # # Peak autocorrelation acorr_p, freq_ac_p = as_f.autocorr(p_power, number_of_steps=len(freq), x=p_freq, x_tot=freq) plt.figure() plt.plot(freq_ac_p, acorr_p) plt.show(block=True)
c2 = len(p) - 1 # Autocorrelation data select freq_ds1 = freq_muHz[c1:c2] p_ds1 = p[c1:c2] # Plot selected interval plt.plot(freq_muHz, p) plt.plot(freq_ds1, p_ds1, 'r') plt.xlabel('Frequency [' + r'mu' + 'Hz]') plt.ylabel('Signal/Noise ratio') plt.legend(['S/N', 'Interval selected for autocorrelation']) plt.show() # Autocorrelation function call ac1 = as_f.autocorr(p_ds1) # Construct frequency steps freq_mean_diff = np.mean(np.diff(freq_muHz)) freq_ac1 = np.linspace(0, freq_mean_diff * len(ac1), num=len(ac1), endpoint=False) # Peak finding ac1_peak_indx = detect_peaks(ac1, show=False) ac1_peak = [ac1[x] for x in ac1_peak_indx] freq_ac1_peak = [freq_ac1[x] for x in ac1_peak_indx] # Plot autocorrelation plt.plot(freq_ac1, ac1) plt.plot(freq_ac1_peak, ac1_peak, 'r*', markersize=7) plt.xlabel('Frequency [microHz]') plt.ylabel('Autocorrelation')
""" import as_f import matplotlib.pyplot as plt import numpy as np plt.rcParams.update({'font.size': 26}) # # Define test spectrum x = np.linspace(0, 3000, 90000) y = [np.sinc(0.1*(i-500))**2 + np.sinc(0.1*(i-1000))**2 + np.sinc(0.1*(i-1300))**2 for i in x] # # Plot test spectrum plt.plot(x, y) plt.xlabel('x') plt.ylabel('f(x)') plt.legend(['f(x) = sinc(0.1*(x-500))^2 + sinc(0.1*(x-1000))^2 + sinc(0.1*(x-1300))^2'], fontsize=12) plt.show() # # Perform autocorrelation correlation = as_f.autocorr(y) # # Plot autocorrelation plt.plot(x, correlation) plt.xlabel('displacement of x') plt.ylabel('Autocorrelation') plt.legend(['Autocorrellation of f as a function of displacement of x']) plt.show()
c1 = 0 c2 = len(p_filled) - 1 # Autocorrelation data select freq_ds2 = freq_filled[c1:c2] p_ds2 = p_filled[c1:c2] # Plot selected interval plt.plot(freq_filled, p_filled) plt.xlabel('Frequency [' + r'mu' + 'Hz]') plt.ylabel('Signal/Noise ratio') plt.legend(['S/N peak data']) plt.show() # Autocorrelation function call ac2 = as_f.autocorr(p_ds2) # Construct frequency steps freq_ac2 = np.linspace(0, freq_mean_diff * len(ac2), num=len(ac2), endpoint=False) # Limit to full frequency max cutindex = np.argmin([abs(x - freq_ac2[-1]) for x in freq_ac2]) freq_ac2 = freq_ac2[0:cutindex] ac2 = ac2[0:cutindex] # Peak finding with specified min-peak-height ac2_peak_indx = detect_peaks(ac2, mph=0.02, show=False)
plt.close() p_corr_select = p_autocorr[coord1:coord2] freq_corr_select = freq_autocorr[coord1:coord2] plt.plot(freq_autocorr, p_autocorr) plt.plot(freq_corr_select, p_corr_select, 'r') plt.xlabel('Frequency [' + r'mu' + 'Hz]') plt.ylabel('Power Spectrum') plt.legend(['Power spectrum reconstructed from peaks', 'Interval selected for autocorrelation']) plt.show() # as_f.autocorrellator(freq_corr_select, p_corr_select) correlation = as_f.autocorr(p_corr_select) # # Reconstruct frequency steps freq_autocorr_plot = np.linspace(0, freq_mean_diff*len(correlation), num=len(correlation), endpoint=False) plt.plot(freq_autocorr_plot, correlation) plt.xlabel('Frequency [' + r'mu' + 'Hz]') plt.ylabel('Autocorrelation') plt.show() # # Find correlation frequencies plt.plot(freq_autocorr_plot, correlation) plt.xlim(-1, 0.7*freq_autocorr_plot[-1]) plt.ylim(-0.01, 0.4) plt.xlabel('Frequency [' + r'mu' + 'Hz]') plt.ylabel('Autocorrelation')