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
- Para cada detecção: calcula atraso τ = 2R/c, amplitude relativa e frequência Doppler f_d = 2·v_r·F_C/c.
- Soma contribuições de eco ao sinal real rx[] e complexo rx_complex[].
- Injeta clutter Rayleigh (opcional).
- Normaliza sinal (ganho fixo independente de SNR).
- Adiciona AWGN gaussiano calibrado pelo snr_db.
- Calcula correlação cruzada (matched filter) real e complexa.
- 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). |