Skip to main content

Biblioteca com funções implementadas de Estatística Básica, Séries de Fourier, Transformada Direta e Inversa de Fourier e Convolução. Desenvolvida por estudantes de Geofísica da Universidade Federal da Bahia, como trabalho da disciplina GEO212 à pedido do professor Diego Novais no semestre 2024.2.

Project description

geo212_ufba2024_2

Biblioteca com funções implementadas de Estatística Básica, Séries de Fourier, Transformada Direta e Inversa de Fourier e Convolução. Desenvolvida pelos estudantes de Geofísica Felipe Lídio Maurício e Gabriel Vergne Mota, da Universidade Federal da Bahia, como trabalho da disciplina GEO212 à pedido do professor Diego Novais no semestre 2024.2.

Instalação

Para utilizar a biblioteca, clone este repositório e importe o módulo no seu código Python.

pip install -r requirements.txt

Funcionalidades

1. Geração de Sinais

  • funcao_onda_quadrada(t): Gera uma onda quadrada.
  • funcao_dente_de_serra(t): Gera uma onda dente de serra.
  • funcao_cosseno(t): Calcula o cosseno de um vetor de tempo.
  • funcao_cosseno_ruidosa(t): Gera um cosseno com ruído.
  • funcao_seno(t): Calcula o seno de um vetor de tempo.
  • funcao_seno_ruidosa(t): Gera um seno com ruído.
  • funcao_composta(t, A1, A2, A3, f1, f2, f3): Cria um sinal composto por senoides de diferentes frequências e amplitudes.
  • t_function(T): Gera um vetor de tempo para um período específico.

2. Análise de Fourier

  • serie_fourier(func, n, T, t): Calcula a Série de Fourier de uma função.
  • transformada_fourier_manual(func, t, n): Implementação manual da Transformada de Fourier.
  • transformada_inversa_fourier_manual(freq, F_freq, t, n): Implementação manual da Transformada Inversa de Fourier.

3. Inversão Geofísica

  • compute_jacobian(con, thick, ab2): Calcula o Jacobiano para um modelo geofísico.
  • forward(con, thick, ab2): Calcula a resposta de um modelo 1D de resistividade elétrica.
  • gauss_newton_inversion(observed_data, initial_con, thick, ab2, max_iter, tol): Algoritmo de inversão Gauss-Newton.
  • gauss_newton_inversion_regularizado(observed_data, initial_con, thick, ab2, par_reg, max_iter_r, tol): Algoritmo de inversão regularizado por Tikhonov.

4. Estatística

  • media(dadosx): Calcula a média de um conjunto de dados.
  • mediana(dadosx): Calcula a mediana de um conjunto de dados.
  • variancia(dadosx): Calcula a variância de um conjunto de dados.
  • desvio_padrao(dadosx): Calcula o desvio padrão de um conjunto de dados.
  • coeficiente_de_variacao(dadosx): Calcula o coeficiente de variação.
  • covariancia(dadosx, dadosy): Calcula a covariância entre dois conjuntos de dados.
  • coeficiente_de_correlacao(dadosx, dadosy): Calcula o coeficiente de correlação.
  • quartil1(dadosx), quartil2(dadosx), quartil3(dadosx), quartil4(dadosx): Calcula os quartis de um conjunto de dados.

5. Processamento de Sinais

  • convolve(signal, window): Aplica uma convolução a um sinal.

Exemplo de Uso

from geo212_ufba2024_2 import funcao_composta, transformada_fourier_manual, transformada_inversa_fourier_manual
import numpy as np
import matplotlib.pyplot as plt

A1, A2, A3 = 2, 2, 2
f1, f2, f3 = 10, 20, 30

# Parâmetros do sinal
T = 1  # Duração total (segundos)
fs = 1000  # Taxa de amostragem (Hz)
dt = 1 / fs  # Intervalo de amostragem
t = np.arange(0, T, dt)  # Vetor de tempo
n = len(t)
sinal_original = funcao_composta(t, A1, A2, A3, f1, f2, f3)


frequencias, transformada = transformada_fourier_manual(sinal_original, t, n)
n = len(frequencias)
sinal_recuperado = transformada_inversa_fourier_manual(frequencias, transformada, t, n)

# Plotando os sinais
plt.figure(figsize=(12, 8))

# Sinal original
plt.subplot(3, 1, 1)
plt.plot(t, sinal_original, label="Sinal Original")
plt.title("Sinal Original no Domínio do Tempo")
plt.xlabel("Tempo (s)")
plt.ylabel("Amplitude")
plt.legend()

# Espectro de Frequência
plt.subplot(3, 1, 2)
plt.plot(frequencias, np.abs(transformada), label="Amplitude da Transformada")
plt.title("Espectro de Frequência")
plt.xlabel("Frequência (Hz)")
plt.ylabel("Amplitude")
plt.xlim(-50, 50)
plt.legend()

# Sinal recuperado
plt.subplot(3, 1, 3)
plt.plot(t, sinal_recuperado, label="Sinal Recuperado")
plt.plot(t, sinal_original, label="Sinal Original", linestyle="--")
plt.title("Sinal Recuperado (Transformada Inversa)")
plt.xlabel("Tempo (s)")
plt.ylabel("Amplitude")
plt.legend()

plt.tight_layout()
plt.show()

# Verifica se a recuperação foi bem-sucedida
erro = np.max(np.abs(sinal_original - sinal_recuperado))
print(f"Erro máximo entre o sinal original e o recuperado: {erro:.6e}")

Contribuições

Sinta-se à vontade para abrir issues e enviar pull requests para melhorias na biblioteca.

Licença

MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geo212_ufba2024_2-0.1.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geo212_ufba2024_2-0.1.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file geo212_ufba2024_2-0.1.0.tar.gz.

File metadata

  • Download URL: geo212_ufba2024_2-0.1.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.7 Linux/6.8.0-52-generic

File hashes

Hashes for geo212_ufba2024_2-0.1.0.tar.gz
Algorithm Hash digest
SHA256 47c2f074f0f826bf7bfcc945b58b6b121914a76fd785c41044d2bb5f59d69c02
MD5 0ccf869c410f26a865a4d95397e6884e
BLAKE2b-256 29f344d21c5480645563a4ad12c8eff7cc82a543578011501345f24f4779e7cf

See more details on using hashes here.

File details

Details for the file geo212_ufba2024_2-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: geo212_ufba2024_2-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.7 Linux/6.8.0-52-generic

File hashes

Hashes for geo212_ufba2024_2-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18e00a987dfb9e884203fef82536cc15dd843cc62bb6d35caa4fdd88e395d257
MD5 e5e2ead30d55e43aada3873a3c796a78
BLAKE2b-256 3bcf2344cc02a934c4bf4c8c9d2ef015f2b758603fcdcf5bc3cb0babbd94e6e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page