#%% Obtengo los módulos de cada señal for ii in range(0, Nexp): mod_signal[:, ii] = np.abs(fftsignal[:, ii]) mod_padding5[:, ii] = np.abs(fftpadding5[:, ii]) mod_padding10[:, ii] = np.abs(fftpadding10[:, ii]) #%% grafico una señal con cero padding FFT.plotFFT(fftsignal[:, 0], fs, N, y1l='Amplitud [UA] ', y2l='Fase [rad] ', c=0, db='on', tipo='plot', m='.', col_ax='off', l=' sin padding') FFT.plotFFT(fftpadding5[:, 0], fs, N, y1l='Amplitud [UA] ', y2l='Fase [rad] ', c=1, db='on', tipo='plot', m='.',
fftsignal = np.fft.fft(signal) mod_fftsignal = np.abs(fftsignal) #%% Gŕaficos de las señales en tiempo y en frecuenciales plt.figure("Gráfico de la señal temporal") plt.plot(tt, signal, 'b') plt.xlabel('tiempo [S]') plt.ylabel('Amplitud [UA]') plt.grid() plt.title('Gráfico de la señal temporal') FFT.plotFFT(fftsignal, fs, N, y1l='Amplitud [UA] ', y2l='Fase [rad] ', c=0, db='off', tipo='plot', m='.', col_ax='off') #%% Cálculo de la energía # energía temporal for ii in range(0, N): energia_temporal += signal[ii]**2 energia_temporal /= N print("la energía termporal es: ", energia_temporal) #energia frecuencial for ii in range(0, N):
signal_padding01 = np.zeros(int(M[0]) + N, float) signal_padding1 = np.zeros(int(M[1]) + N, float) signal_padding10 = np.zeros(int(M[2]) + N, float) aux_padding01 = np.zeros(int(M[0]), float) aux_padding1 = np.zeros(int(M[1]), float) aux_padding10 = np.zeros(int(M[2]), float) #%% generacion y muestreo de las senoidal tt, signal = sg.seno(fs, f0, N, a0, p0) #%% concateno los ceros signal_padding01 = np.concatenate((signal, aux_padding01), axis=0) signal_padding1 = np.concatenate((signal, aux_padding1), axis=0) signal_padding10 = np.concatenate((signal, aux_padding10), axis=0) del aux_padding01 del aux_padding1 del aux_padding10 #%% Gŕaficos de las señales frecuenciales fftpadding01 = fft(signal_padding01) FFT.plotFFT(fftpadding01, fs, tp='FFT', c=0, l=fd1[0], db='on', m='.') fftpadding1 = fft(signal_padding1) FFT.plotFFT(fftpadding1, fs, tp='FFT', c=1, l=fd1[1], db='on', m='.') fftpadding10 = fft(signal_padding10) FFT.plotFFT(fftpadding10, fs, norm=N, tp='FFT', c=2, l=fd1[2], db='on', m='.')
#%% Gŕaficos de las señales en tiempo y en frecuenciales plt.figure("Gráfico de la señal temporal") plt.plot(tt, signal, 'b', label='f0 = 9d.f') plt.xlabel('tiempo [S]') plt.ylabel('Amplitud [UA]') plt.axhline(0, color="black") plt.axvline(0, color="black") plt.grid() plt.title('Gráfico de la señal temporal') plt.legend(loc='upper right') FFT.plotFFT(fftsignal, fs, N, y1l='Amplitud Normlizada [db] ', y2l='Fase [rad] ', c=0, db='ON', tipo='plot', m='.') #%% Cálculo de la energía # energía temporal for ii in range(0, N): energia_temporal += signal[ii]**2 energia_temporal /= N print("la energía termporal es: ", energia_temporal) #energia frecuencial for ii in range(0, N):
signal = [] signal = np.zeros((N, 3), dtype='complex') fftsignal = [] fftsignal = np.zeros((N, 3), dtype='complex') fftsignal1 = [] fftsignal1 = np.zeros((N, 3), dtype='complex') tt, signal[:, 0] = sg.seno(fs, f0, N, a0, p0) tt, signal[:, 1] = sg.square(fs, f0, N, a0, p0, duty) tt, signal[:, 2] = sg.sawtooth(fs, f0, N, a0, p0, width) ii = 0 while ii < 3: fftsignal[:, ii] = np.fft.fft(signal[:, ii]) FFT.plotFFT(fftsignal[:, ii], fs, N, tp='FFT', c=ii, db='off', l=lsignal[ii]) fftsignal1[:, ii] = FFT.myDFT(signal[:, ii]) FFT.plotFFT(fftsignal1[:, ii], fs, N, tp='DFT', c=ii, db='off', l=lsignal[ii]) ii += 1
fftsignal2 = np.zeros(M[1]) fftsignal3 = np.zeros(M[2]) fftsignal4 = np.zeros(M[3]) fftsignal5 = np.zeros(M[4]) signal2 = np.zeros(M[1]) signal3 = np.zeros(M[2]) signal4 = np.zeros(M[3]) signal5 = np.zeros(M[4]) #%% generacion y muestreo de senoidal tt, signal = sg.seno(fs, f0, N, a0, p0) #%% concateno los ceros signal2 = np.concatenate((signal, signal2), axis=0) signal3 = np.concatenate((signal, signal3), axis=0) signal4 = np.concatenate((signal, signal4), axis=0) signal5 = np.concatenate((signal, signal5), axis=0) #%% realización del experimento fftsignal = np.fft.fft(signal) FFT.plotFFT(fftsignal, fs, M, tp='FFT', c=0, l=fd1[0], db='on', m='.') fftsignal2 = np.fft.fft(signal2) FFT.plotFFT(fftsignal2, fs, M, tp='FFT', c=1, l=fd1[1], db='on', m='.') fftsignal3 = np.fft.fft(signal3) FFT.plotFFT(fftsignal3, fs, M, tp='FFT', c=2, l=fd1[2], db='on', m='.') fftsignal4 = np.fft.fft(signal4) FFT.plotFFT(fftsignal4, fs, M, tp='FFT', c=3, l=fd1[3], db='on', m='.') fftsignal5 = np.fft.fft(signal5) FFT.plotFFT(fftsignal5, fs, M, tp='FFT', c=4, l=fd1[4], db='on', m='.')
#tt, signal = sg.seno(fs, f0 + fd[2], N, a0, p0) #ax = plt.figure("Funcion senoidal") #plt.plot(tt, signal,color='blue',label='sin(wt)') #plt.xlabel('tiempo [segundos]') #plt.ylabel('Amplitud [UA] ') #plt.axhline(0, color="black") #plt.axvline(0, color="black") #plt.grid() #plt.title('Funcion senoidal') #plt.legend(loc = 'upper right') #plt.show() ii = 0 while ii < 3 : fftsignal[:,ii] = np.fft.fft(signal[:,ii]) FFT.plotFFT(fftsignal[:,ii],fs,N, tp= 'FFT', c=ii, l=fd1[ii], db='on', m='o') ii += 1 #fftsignal = np.fft.fft(signal) #FFT.plotFFT(fftsignal,fs,N, tp= 'FFT') #%% mi DFT #fftsignal2 = FFT.myDFT(signal) #FFT.plotFFT(fftsignal2, fs, N, tp='my DFT') #tt, signal = sg.seno(fs, f0, N, a0, p0) #qsignal = sg.quantizer(signal, 4) #ax = plt.figure("Funcion senoidal cuantizada n= 4") #plt.plot(tt, qsignal,color='blue',label='sin(wt)') #plt.xlabel('tiempo [segundos]') #plt.ylabel('Amplitud [UA] ')
ii = 0 while ii < 8: tt, signal = sg.seno(fs, f0, N[ii], a0, p0) the_start = time() np.fft.fft(signal) the_end = time() tiempofft[ii] = the_end - the_start ii += 1 #%% calculando el tiempo de mi DFT ii = 0 while ii < 8: tt, signal = sg.seno(fs, f0, N[ii], a0, p0) the_start = time() FFT.myDFT(signal) the_end = time() tiempodft[ii] = the_end - the_start ii += 1 import pandas as pd index = ['16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192'] data = {'N': index, 'FFT': tiempofft, 'myDFT': tiempodft} df = pd.DataFrame(data) df.set_index('N', inplace=True) # select two columns print(df) plt.figure("Gráfico comparatvo de tiempo entre la FFT y la DFT")