ASK 调制信号包络 (Python)

问题描述 投票:0回答:1

我正在处理 ASK 调制音频信号。我使用 Tkinter 打开文件(.wav 格式)并通过阈值进行简单的过滤。

我想要信封图。

Example result

import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
from tkinter import Tk
from tkinter.filedialog import askopenfilename

Tk().withdraw() 
audioFileName = askopenfilename() 

# Leitura do sinal de áudio modulado em ASK
sample_rate, audio_data = wavfile.read(audioFileName)

# Parâmetros
threshold = 16000  

# Demodulação ASK
demodulated_signal = (audio_data > threshold).astype(int)

# Plotagem dos sinais
time_axis = np.arange(len(audio_data)) / sample_rate

plt.figure(figsize=(16, 6))
plt.subplot(2, 1, 1)
plt.plot(time_axis, audio_data, color="#AD2523")
plt.title('Sinal de Áudio Capturado')
plt.xlabel('Tempo (s)')
plt.ylabel('Amplitude')
plt.subplot(2, 1, 2)
plt.plot(time_axis, demodulated_signal, color="#2B77AD")
plt.title('Sinal Demodulado (Digital)')
plt.xlabel('Tempo (s)')
plt.ylabel('Bit')
plt.tight_layout()
plt.show() 

我尝试了几个建议使用希尔伯特的教程,但没有成功。

analytic_signal = hilbert(demodulated_signal)
envelope = np.abs(analytic_signal)
python signal-processing modulation
1个回答
0
投票

您想要的(在您提供的图中)不是信封。您的“预期信号”是布尔“高于能量阈值”信号而不是包络。

为了得到这个,你可以使用

abs(signal)
的运行平均值(或者更好 - 信号的能量,即
signal ** 2
)以及任意大小的运行平均值窗口。

旁注:希尔伯特变换将为您提供包络,但仅当您的信号是窄带时

© www.soinside.com 2019 - 2024. All rights reserved.