Skip to content

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