예제 #1
0
#%% 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='.',
예제 #2
0
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):
예제 #3
0
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='.')
예제 #4
0
#%% 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):
예제 #5
0
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
예제 #6
0
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='.')
예제 #7
0
#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] ')
예제 #8
0
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")