def ondas(maxx, puntos, K, amplitud, f, phi, tipo): '''Calcula puntos de una onda de tipo tipo con los parametros dados''' count = 0 y_record = [] # y_record2 = [] y_res = [] T = calculadora.ulinspace(maxx, puntos) tx = [] for i in T: tx.append(maxx - i) if tipo == 1: for t in tx: y_sen = amplitud * math.sin((t * 2 * math.pi * f) + phi) y_record2.append(y_sen) print(len(y_record2)) else: for k in range(1, K + 1): for t in tx: if tipo == 2: y = amplitud * (4 / math.pi) * (math.sin( ((2 * k - 1) * (2 * math.pi * f * t + phi))) / (2 * k - 1)) y_record.append(y) elif tipo == 3: y = (4 * amplitud / math.pi**2) * (math.cos( ((2 * k - 1) * (2 * math.pi * f * t + phi))) / (2 * k - 1)**2) y_record.append(y) #y_record.append(y) #Lista de puntos de la funcion. #time.sleep_ms(10) count = count + 1 #gc.collect() print(count, "ok") time.sleep(1) #print("Puntos: ",len(T), ", tamano del arreglo ", len(y_record), " presicion: ",K) for i in range(puntos): y_res.append(y_record[i] + y_record[i + (K - 1) * puntos]) #time.sleep_ms(10) K = K - 1 while K != 1: for i in range(puntos): y_res[i] = y_res[i] + y_record[i + (K - 1) * puntos] #time.sleep_ms(10) print("Tamano del arreglo res", len(y_res), "presicion: ", K) K = K - 1 if tipo == 1: return y_record2 else: return y_res
def urectangular(max, puntos, K, amplitud): print("urectangular") print("Iniciando...") count=0 y_record=[] # y_res=[] T = calculadora.ulinspace(max,puntos) #print(T) for k in range(1,K+1): #print("k -> ",k) for t in T: #print("Operacion: ", "k -> ",k, ", t -> ",t) y = amplitud*(4/math.pi)*(math.sin((2*k-1)*t)/(2*k-1)) y_record.append(y) #Lista de puntos de la funcion. time.sleep_ms(40) count=count+1 gc.collect() #diseno: esta agregando a la lista ambas funciones. # print(count, "ok") time.sleep(1) print("Puntos: ",len(T), ", tamano del arreglo ", len(y_record), " presicion: ",K) for i in range(puntos): #print("Suma: ", i, " con ", i+(K-1)*puntos ) #time.sleep(0.2) y_res.append(y_record[i]+y_record[i+(K-1)*puntos]) time.sleep_ms(40) K=K-1 while K!=1: for i in range(puntos): #print("Suma while: ", i, " con ", i+(K-1)*puntos ) #time.sleep(0.2) y_res[i]=y_res[i]+y_record[i+(K-1)*puntos] time.sleep_ms(40) print("Tamano del arreglo res", len(y_res), "presicion: ",K) K=K-1 print(len(y_res))
def main(max, puntos, K, amplitud): print("main") y_sum = 0 # y_record = [] # y_res = [] T = calculadora.ulinspace(max, puntos) yt = [] #print(T) for k in range(1, K + 1): #print("k -> ",k) for t in T: #print("Operacion: ", "k -> ",k, ", t -> ",t) y = amplitud * (4 / math.pi) * (math.sin( (2 * k - 1) * t) / (2 * k - 1)) y_record.append(y) #Lista de puntos de la funcion. #dise帽o: esta agregando a la lista ambas funciones. # print("Puntos: ", len(T), ", tama帽o del arreglo ", len(y_record), "presicion: ", K) for i in range(puntos): #print("Suma: ", i, " con ", i+(K-1)*puntos ) #time.sleep(0.2) y_res.append(y_record[i] + y_record[i + (K - 1) * puntos]) K = K - 1 while K != 1: for i in range(puntos): #print("Suma while: ", i, " con ", i+(K-1)*puntos ) #time.sleep(0.2) y_res[i] = y_res[i] + y_record[i + (K - 1) * puntos] print("Tama帽o del arreglo res", len(y_res), "presicion: ", K) K = K - 1 plt.plot(T, y_res, "-o") plt.xlabel("t") plt.ylabel("y(t)") plt.title('Fenomeno de Gibbs', fontsize=16, color='r') plt.grid(True) plt.show()
def urectangular(max, puntos, K, amplitud, w0, phi): print("urectangular") import framebuf spi = SPI(1, baudrate=328125, polarity=0, phase=0) cs = Pin(2) #D4 dc = Pin(15) #D8 rst = Pin(0) #D3 #bl = Pin(12, Pin.OUT, value=1) #D6 print("Variables:OK") lcd = pcd8544.PCD8544(spi, cs, dc, rst) print("lcd ok") buffer = bytearray((lcd.height // 8) * lcd.width) framebuf = framebuf.FrameBuffer1(buffer, lcd.width, lcd.height) framebuf.fill(1) lcd.data(buffer) time.sleep(1) framebuf.fill(0) lcd.data(buffer) print("Iniciando...") count = 0 y_record = [] # y_res = [] T = calculadora.ulinspace(max, puntos) #print(T) for k in range(1, K + 1): #print("k -> ",k) for t in T: #print("Operacion: ", "k -> ",k, ", t -> ",t) y = amplitud * (4 / math.pi) * (math.sin( ((2 * k - 1) * (w0 * t + phi))) / (2 * k - 1)) y_record.append(y) #Lista de puntos de la funcion. time.sleep_ms(10) count = count + 1 gc.collect() #diseno: esta agregando a la lista ambas funciones. # print(count, "ok") time.sleep(1) print("Puntos: ", len(T), ", tamano del arreglo ", len(y_record), " presicion: ", K) for i in range(puntos): #print("Suma: ", i, " con ", i+(K-1)*puntos ) #time.sleep(0.2) y_res.append(y_record[i] + y_record[i + (K - 1) * puntos]) time.sleep_ms(10) K = K - 1 while K != 1: for i in range(puntos): #print("Suma while: ", i, " con ", i+(K-1)*puntos ) #time.sleep(0.2) y_res[i] = y_res[i] + y_record[i + (K - 1) * puntos] time.sleep_ms(10) print("Tamano del arreglo res", len(y_res), "presicion: ", K) K = K - 1 print(len(y_res)) count = 1 for y in y_res: print(y, round(y)) time.sleep_ms(10) framebuf.pixel(count, 24 - round(y), 1) count = count + 1 #eje y framebuf.vline(0, 0, 96, 0xffff) #eje x framebuf.hline(0, 24, 96, 0xffff) #escribiendo datas lcd.data(buffer)
def ondas(max, puntos, presicion, amplitud, w0, phi): buf = bytearray(puntos) for i in range(len(buf)): buf[i] = 128 + int(amplitud*math.sin((i*w0)+phi)) print(buf[i]) return buf #dac.write_timed(buf, 400 * len(buf), mode=DAC.CIRCULAR) if __name__ == "__main__": #parametros=[max, puntos, presicion, amplitud, w0, phi] max=100 puntos=100 #no funciona para puntos>200 presicion=9 #K =presicion amplitud=16 w0=0.1 phi=90 res=ondas(max, puntos, presicion, amplitud, w0, phi) T = calculadora.ulinspace(max,puntos) #plt.plot(res[0],res[0]) plt.plot(T, res, '*' ) plt.xlabel("t") plt.ylabel("y(t)") plt.title('Onda test', fontsize=16, color='r') plt.grid(True) plt.show() else: print("Ondas.py importado")