Skip to content

Pulse Modulation

pulse_modulation.py — Widget de visualização do pulso radar LFM (coluna do meio).

Contém a classe PulseWidget, um QSplitter vertical com: - HeaderPanel : tabela HTML com parâmetros globais da simulação. - TxPlot : chirp LFM transmitido, normalizado a ±1 (ciano). - RxPlot : sinal banda base recebido + AWGN (laranja). - MFPlot : saída do Filtro Casado / Pulse Compression (magenta).

O método público update_pulse(detections) reconstrói o sinal RX a partir das detecções do PPI, aplica ruído AWGN e calcula o filtro casado. Retorna um dict com os sinais processados para uso no ProcessingWidget.

PulseWidget

Bases: QSplitter

Painel de visualização do pulso radar em banda base (chirp LFM).

Parâmetros de forma de onda derivados automaticamente de r_max: T_PRI = 2·r_max / c (período de repetição de pulso) T_P = T_PRI / 7 (duração do pulso transmitido) fs = N_SAMPLES/T_PRI (taxa de amostragem) k = B / T_P (taxa de varredura do chirp)

Uso::

pw = PulseWidget(ppi=ppi, snr_db=20, coherent_integration=True)
pulse_data = pw.update_pulse(detections)
# pulse_data → {'comp_disp', 'comp_complex', 'azimuth_deg'}

__init__(ppi=None, snr_db=None, coherent_integration=False, clutter_type='None', normalize_plots=True)

Parameters:

Name Type Description Default
ppi PPI

Instância de PPI com radar e targets configurados.

None
snr_db float

SNR da adição de AWGN em dB. Padrão: DEFAULT_SNR_DB.

None
coherent_integration bool

Se True, passa sinal IQ complexo normalizado no retorno.

False
clutter_type str

Tipo de clutter a injetar ('None' ou 'Rayleigh').

'None'
normalize_plots bool

Se True, normaliza eixo Y do MF para [0, 1].

True

update_pulse(detections)

Reconstrói o sinal RX banda base a partir das detecções do PPI, adiciona ruído AWGN, calcula o Filtro Casado e atualiza os plots.

Pipeline
  1. Para cada detecção: calcula atraso τ = 2R/c, amplitude relativa e frequência Doppler f_d = 2·v_r·F_C/c.
  2. Soma contribuições de eco ao sinal real rx[] e complexo rx_complex[].
  3. Injeta clutter Rayleigh (opcional).
  4. Normaliza sinal (ganho fixo independente de SNR).
  5. Adiciona AWGN gaussiano calibrado pelo snr_db.
  6. Calcula correlação cruzada (matched filter) real e complexa.
  7. Atualiza plots e cabeçalho HTML.

Parameters:

Name Type Description Default
detections list[DetectionRecord]

Lista de DetectionRecord do passo atual.

required

Returns:

Name Type Description
pulse_data dict

Dicionário contendo os seguintes dados com chaves: 'comp_disp' : np.ndarray — saída real do MF (para plot e MTI). 'comp_complex' : np.ndarray — saída complexa do MF (para integração coerente). 'azimuth_deg' : float — azimute atual do radar (graus).