Skip to content
#3 Análisis de Simulaciones
Importaciones
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
from scipy.optimize import curve_fit
from scipy import stats
from scipy.stats import chisquare
from scipy.stats import chi2_contingency
from scipy.interpolate import UnivariateSpline
from scipy.optimize import minimize
import sympy as sp
from scipy.signal import convolve
import seaborn as sns
plt.rcParams['mathtext.fontset'] = 'cm'
plt.rcParams['font.family'] = 'Serif'
Mediciones simuladas
- La fuente tiene una resistencia interna de 50
- En RL, la resistencias de 10k y 100
tienen una inductancia de 0.01 (En pasabajos no) - En RL, la inductancia del pasaaltos de 1
, tiene una resistencia en serie de 90 , y una capacitancia en paralelo de 1 . - En RL v2 y LC, la inductancia de 1200
tiene una resistencia interna de 1
RC Pasa Bajos R = 1000 , C = 0.1
# Leer el archivo y crear el DataFrame
RC_pb = pd.read_csv('RC_pasabajos.txt', delimiter='\t', encoding='latin1', skiprows=1, names=['Frecuencia', 'Atenuación_Fase'])
# Eliminar caracteres no numéricos de la columna 'Atenuación_Fase'
RC_pb['Atenuación_Fase'] = RC_pb['Atenuación_Fase'].str.replace('[dB()]', '', regex=True)
RC_pb['Atenuación_Fase'] = RC_pb['Atenuación_Fase'].str.replace('[°]', '', regex=True)
# Separar la columna 'Atenuación_Fase' en dos columnas: 'Atenuación' y 'Fase'
RC_pb[['Atenuación', 'Fase']] = RC_pb['Atenuación_Fase'].str.split(',', expand=True).astype(float)
# Eliminar la columna original 'Atenuación_Fase'
RC_pb.drop(columns=['Atenuación_Fase'], inplace=True)
# Mostrar el DataFrame
RC_pb.head()
# Plot
sns.lineplot(x='Frecuencia', y='Atenuación', data=RC_pb)
plt.xscale('log')
plt.figure()
sns.lineplot(x = 'Frecuencia', y = 'Fase', data = RC_pb)
plt.xscale('log')
plt.show()
'''
# Plot Atenuación
plt.figure()
plt.plot(RC_pb['Frecuencia'], RC_pb['Atenuación'])
plt.xscale('log')
plt.xlabel('Frecuencia')
plt.ylabel('Atenuación')
plt.title('Atenuación vs Frecuencia')
# Plot Fase
plt.figure()
plt.plot(RC_pb['Frecuencia'], RC_pb['Fase'])
plt.xscale('log')
plt.xlabel('Frecuencia')
plt.ylabel('Fase')
plt.title('Fase vs Frecuencia')
plt.show()
'''
RC Pasa Altos R = 1000 , C = 0.1
# Leer el archivo y crear el DataFrame
RC_pa = pd.read_csv('RC_pasaaltos.txt', delimiter='\t', encoding='latin1', skiprows=1, names=['Frecuencia', 'Atenuación_Fase'])
# Eliminar caracteres no numéricos de la columna 'Atenuación_Fase'
RC_pa['Atenuación_Fase'] = RC_pa['Atenuación_Fase'].str.replace('[dB()]', '', regex=True)
RC_pa['Atenuación_Fase'] = RC_pa['Atenuación_Fase'].str.replace('[°]', '', regex=True)
# Separar la columna 'Atenuación_Fase' en dos columnas: 'Atenuación' y 'Fase'
RC_pa[['Atenuación', 'Fase']] = RC_pa['Atenuación_Fase'].str.split(',', expand=True).astype(float)
# Eliminar la columna original 'Atenuación_Fase'
RC_pa.drop(columns=['Atenuación_Fase'], inplace=True)
# Mostrar el DataFrame
RC_pa.head()
# Plot
sns.lineplot(x='Frecuencia', y='Atenuación', data=RC_pa)
plt.xscale('log')
plt.figure()
sns.lineplot(x = 'Frecuencia', y = 'Fase', data = RC_pa)
plt.xscale('log')
plt.show()
"""
# Plot Atenuación
plt.figure()
plt.plot(RC_pa['Frecuencia'], RC_pa['Atenuación'])
plt.xscale('log')
plt.xlabel('Frecuencia')
plt.ylabel('Atenuación')
plt.title('Atenuación vs Frecuencia')
# Plot Fase
plt.figure()
plt.plot(RC_pa['Frecuencia'], RC_pa['Fase'])
plt.xscale('log')
plt.xlabel('Frecuencia')
plt.ylabel('Fase')
plt.title('Fase vs Frecuencia')
plt.show()
"""
RL Pasa Bajos R = 100 , L = 1200
# Leer el archivo y crear el DataFrame
RL_pb = pd.read_csv('RL_pasabajos.txt', delimiter='\t', encoding='latin1', skiprows=1, names=['Frecuencia', 'Atenuación_Fase'])
# Eliminar caracteres no numéricos de la columna 'Atenuación_Fase'
RL_pb['Atenuación_Fase'] = RL_pb['Atenuación_Fase'].str.replace('[dB()]', '', regex=True)
RL_pb['Atenuación_Fase'] = RL_pb['Atenuación_Fase'].str.replace('[°]', '', regex=True)
# Separar la columna 'Atenuación_Fase' en dos columnas: 'Atenuación' y 'Fase'
RL_pb[['Atenuación', 'Fase']] = RL_pb['Atenuación_Fase'].str.split(',', expand=True).astype(float)
# Eliminar la columna original 'Atenuación_Fase'
RL_pb.drop(columns=['Atenuación_Fase'], inplace=True)
# Mostrar el DataFrame
RL_pb.head()
# Plot
sns.lineplot(x='Frecuencia', y='Atenuación', data=RL_pb)
plt.xscale('log')
plt.figure()
sns.lineplot(x = 'Frecuencia', y = 'Fase', data = RL_pb)
plt.xscale('log')
plt.show()
RL Pasa Altos R = 10k , L = 1
# Leer el archivo y crear el DataFrame
RL_pa = pd.read_csv('RL_pasaaltos.txt', delimiter='\t', encoding='latin1', skiprows=1, names=['Frecuencia', 'Atenuación_Fase'])
# Eliminar caracteres no numéricos de la columna 'Atenuación_Fase'
RL_pa['Atenuación_Fase'] = RL_pa['Atenuación_Fase'].str.replace('[dB()]', '', regex=True)
RL_pa['Atenuación_Fase'] = RL_pa['Atenuación_Fase'].str.replace('[°]', '', regex=True)
# Separar la columna 'Atenuación_Fase' en dos columnas: 'Atenuación' y 'Fase'
RL_pa[['Atenuación', 'Fase']] = RL_pa['Atenuación_Fase'].str.split(',', expand=True).astype(float)
# Eliminar la columna original 'Atenuación_Fase'
RL_pa.drop(columns=['Atenuación_Fase'], inplace=True)
# Mostrar el DataFrame
RL_pa.head()
# Plot
sns.lineplot(x='Frecuencia', y='Atenuación', data=RL_pa)
plt.xscale('log')
plt.figure()
sns.lineplot(x = 'Frecuencia', y = 'Fase', data = RL_pa)
plt.xscale('log')
plt.show()
RL Pasa Altos v2 R = 100 , L = 1200 `
# Leer el archivo y crear el DataFrame
RL_pa_v2 = pd.read_csv('RL_pasaaltos_v2.txt', delimiter='\t', encoding='latin1', skiprows=1, names=['Frecuencia', 'Atenuación_Fase'])
# Eliminar caracteres no numéricos de la columna 'Atenuación_Fase'
RL_pa_v2['Atenuación_Fase'] = RL_pa_v2['Atenuación_Fase'].str.replace('[dB()]', '', regex=True)
RL_pa_v2['Atenuación_Fase'] = RL_pa_v2['Atenuación_Fase'].str.replace('[°]', '', regex=True)
# Separar la columna 'Atenuación_Fase' en dos columnas: 'Atenuación' y 'Fase'
RL_pa_v2[['Atenuación', 'Fase']] = RL_pa_v2['Atenuación_Fase'].str.split(',', expand=True).astype(float)
# Eliminar la columna original 'Atenuación_Fase'
RL_pa_v2.drop(columns=['Atenuación_Fase'], inplace=True)
# Mostrar el DataFrame
RL_pa_v2.head()
# Plot
sns.lineplot(x='Frecuencia', y='Atenuación', data=RL_pa_v2)
plt.xscale('log')
plt.figure()
sns.lineplot(x = 'Frecuencia', y = 'Fase', data = RL_pa_v2)
plt.xscale('log')
plt.show()
LC Pasa Altos L = 1200 ,C = 0.1