Files
SDR-Rover/data/processed/lab064/rf_result.json
2026-09-15 12:03:48 +03:00

426 lines
15 KiB
JSON

{
"lab": "Lab064",
"stage": "OFFLINE_RF_LEVEL_LINEARITY_ANALYSIS",
"packet_receiver_used": false,
"location": {
"start_sample": 4123520,
"correlation": 0.0888256100450642,
"coarse_cfo_hz": 0.0,
"stride": 32
},
"rows": [
{
"label": "L0",
"level_db": -18.0,
"rx_start_sample": 4923521,
"alignment_adjustment_samples": 1,
"full_iq": {
"samples": 800000,
"mean_i": 0.94972375,
"mean_q": 1.8355175,
"power_code2": 5.18564125,
"ac_power_code2": 0.9145415558796861,
"rms_code": 2.2772003095907043,
"peak_magnitude_code": 7.0710678118654755,
"max_abs_i": 6.0,
"max_abs_q": 7.0,
"papr_db": 9.841675359702911,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00025928206249999997,
"ac_rms_code": 0.9563166608815754
},
"background_label": "INITIAL_GUARD",
"background": {
"samples": 160000,
"mean_i": 0.940225,
"mean_q": 1.8409875,
"power_code2": 4.7947875,
"ac_power_code2": 0.5215294742187488,
"rms_code": 2.189700321961889,
"peak_magnitude_code": 4.242640687119285,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 5.7450314065030845,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.000239739375,
"ac_rms_code": 0.7221699759881665
},
"background_window_start_sample": 4443520,
"matched_signal_power": 0.0007507510158784873,
"matched_signal_amplitude_rms": 0.027399836055686307,
"residual_power": 1.2137948040249413,
"residual_to_matched_amplitude_ratio": 40.209129659782626,
"matched_to_residual_db": -32.08649345507262,
"complex_gain_h": {
"real": 0.0018760642981310563,
"imag": -0.0045080629571906915,
"phase_rad_at_active_start": -1.1764391150184978
},
"gain_abs": 0.00488285253481168,
"gain_power_abs_h_squared": 2.384224887671685e-05,
"cfo_hz": 0.0957717781274782,
"residual_spectrum": {
"residual_band_h1_power_code2": 0.0029441230361582733,
"residual_band_h2_power_code2": 0.002517548539085255,
"residual_band_h3_power_code2": 0.0017878979213816356,
"interpretation": "Diagnostic residual bands at 50/100/150 kHz; not calibrated RF harmonic power"
}
},
{
"label": "L1",
"level_db": -12.0,
"rx_start_sample": 6123541,
"alignment_adjustment_samples": 21,
"full_iq": {
"samples": 800000,
"mean_i": 0.9560375,
"mean_q": 1.8325725,
"power_code2": 5.2504775,
"ac_power_code2": 0.9781478308375009,
"rms_code": 2.2913920441513276,
"peak_magnitude_code": 7.211102550927978,
"max_abs_i": 6.0,
"max_abs_q": 7.0,
"papr_db": 9.958045419078847,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.000262523875,
"ac_rms_code": 0.9890135645366553
},
"background_label": "GAP_L0_L1",
"background": {
"samples": 160000,
"mean_i": 0.95144375,
"mean_q": 1.8329875,
"power_code2": 4.78826875,
"ac_power_code2": 0.5231803654296865,
"rms_code": 2.1882113129220406,
"peak_magnitude_code": 4.242640687119285,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 5.7509398714368505,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00023941343750000002,
"ac_rms_code": 0.7233120802459243
},
"background_window_start_sample": 5883520,
"matched_signal_power": 0.0029612351609719875,
"matched_signal_amplitude_rms": 0.054417232206094304,
"residual_power": 1.0695946032022712,
"residual_to_matched_amplitude_ratio": 19.005231005856622,
"matched_to_residual_db": -25.577463055166668,
"complex_gain_h": {
"real": 0.004471119012843702,
"imag": -0.001937685853593986,
"phase_rad_at_active_start": -0.40894566669212534
},
"gain_abs": 0.0048729387123409105,
"gain_power_abs_h_squared": 2.374553169423069e-05,
"cfo_hz": -0.16857111258676097,
"residual_spectrum": {
"residual_band_h1_power_code2": 0.0037442904303572424,
"residual_band_h2_power_code2": 0.0029946268848091966,
"residual_band_h3_power_code2": 0.0022268690579244723,
"interpretation": "Diagnostic residual bands at 50/100/150 kHz; not calibrated RF harmonic power"
}
},
{
"label": "L2",
"level_db": -6.0,
"rx_start_sample": 7323533,
"alignment_adjustment_samples": 13,
"full_iq": {
"samples": 800000,
"mean_i": 0.9631825,
"mean_q": 1.84173875,
"power_code2": 5.17589875,
"ac_power_code2": 0.856176598442187,
"rms_code": 2.275060164039624,
"peak_magnitude_code": 7.280109889280518,
"max_abs_i": 6.0,
"max_abs_q": 7.0,
"papr_db": 10.102900974475599,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002587949375,
"ac_rms_code": 0.925298113281437
},
"background_label": "GAP_L1_L2",
"background": {
"samples": 160000,
"mean_i": 0.9560375,
"mean_q": 1.8575625,
"power_code2": 4.88045,
"ac_power_code2": 0.5159038571874985,
"rms_code": 2.209174053803819,
"peak_magnitude_code": 4.242640687119285,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 5.668126373000443,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002440225,
"ac_rms_code": 0.7182644757939087
},
"background_window_start_sample": 7083520,
"matched_signal_power": 0.011333436190702588,
"matched_signal_amplitude_rms": 0.10645861257175292,
"residual_power": 0.5290886880136152,
"residual_to_matched_amplitude_ratio": 6.832559719073439,
"matched_to_residual_db": -16.691668725481204,
"complex_gain_h": {
"real": 0.0032772531007889995,
"imag": -0.003478187284280655,
"phase_rad_at_active_start": -0.8151334504253348
},
"gain_abs": 0.00477893028523777,
"gain_power_abs_h_squared": 2.283817467116275e-05,
"cfo_hz": 0.006742170898886185,
"residual_spectrum": {
"residual_band_h1_power_code2": 0.004466260208758569,
"residual_band_h2_power_code2": 0.0030543665029441423,
"residual_band_h3_power_code2": 0.0020345488796523733,
"interpretation": "Diagnostic residual bands at 50/100/150 kHz; not calibrated RF harmonic power"
}
},
{
"label": "L3",
"level_db": 0.0,
"rx_start_sample": 8523534,
"alignment_adjustment_samples": 14,
"full_iq": {
"samples": 800000,
"mean_i": 0.9575575,
"mean_q": 1.8561875,
"power_code2": 5.48103,
"ac_power_code2": 1.1186815990375,
"rms_code": 2.3411599689043037,
"peak_magnitude_code": 7.280109889280518,
"max_abs_i": 6.0,
"max_abs_q": 7.0,
"papr_db": 9.85413690444334,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002740515,
"ac_rms_code": 1.0576774551050523
},
"background_label": "GAP_L2_L3",
"background": {
"samples": 160000,
"mean_i": 0.97165,
"mean_q": 1.8424125,
"power_code2": 4.8607875,
"ac_power_code2": 0.5221999573437506,
"rms_code": 2.204719369897221,
"peak_magnitude_code": 4.47213595499958,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 6.14323360311441,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00024303937499999998,
"ac_rms_code": 0.7226340410911671
},
"background_window_start_sample": 8283520,
"matched_signal_power": 0.0453318643989967,
"matched_signal_amplitude_rms": 0.21291280938214285,
"residual_power": 0.740861773845582,
"residual_to_matched_amplitude_ratio": 4.042656143280289,
"matched_to_residual_db": -12.133336061267785,
"complex_gain_h": {
"real": 0.003384387504328541,
"imag": -0.003391322182689881,
"phase_rad_at_active_start": -0.7864216245934512
},
"gain_abs": 0.004791152776343041,
"gain_power_abs_h_squared": 2.295514492625963e-05,
"cfo_hz": -0.07606695286129402,
"residual_spectrum": {
"residual_band_h1_power_code2": 0.009576142863317505,
"residual_band_h2_power_code2": 0.004468597337512337,
"residual_band_h3_power_code2": 0.002725169628283891,
"interpretation": "Diagnostic residual bands at 50/100/150 kHz; not calibrated RF harmonic power"
}
}
],
"background_windows": [
{
"label": "INITIAL_GUARD",
"tx_relative_start_sample": 320000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 4443520,
"metrics": {
"samples": 160000,
"mean_i": 0.940225,
"mean_q": 1.8409875,
"power_code2": 4.7947875,
"ac_power_code2": 0.5215294742187488,
"rms_code": 2.189700321961889,
"peak_magnitude_code": 4.242640687119285,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 5.7450314065030845,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.000239739375,
"ac_rms_code": 0.7221699759881665
}
},
{
"label": "GAP_L0_L1",
"tx_relative_start_sample": 1760000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 5883520,
"metrics": {
"samples": 160000,
"mean_i": 0.95144375,
"mean_q": 1.8329875,
"power_code2": 4.78826875,
"ac_power_code2": 0.5231803654296865,
"rms_code": 2.1882113129220406,
"peak_magnitude_code": 4.242640687119285,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 5.7509398714368505,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00023941343750000002,
"ac_rms_code": 0.7233120802459243
}
},
{
"label": "GAP_L1_L2",
"tx_relative_start_sample": 2960000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 7083520,
"metrics": {
"samples": 160000,
"mean_i": 0.9560375,
"mean_q": 1.8575625,
"power_code2": 4.88045,
"ac_power_code2": 0.5159038571874985,
"rms_code": 2.209174053803819,
"peak_magnitude_code": 4.242640687119285,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 5.668126373000443,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002440225,
"ac_rms_code": 0.7182644757939087
}
},
{
"label": "GAP_L2_L3",
"tx_relative_start_sample": 4160000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 8283520,
"metrics": {
"samples": 160000,
"mean_i": 0.97165,
"mean_q": 1.8424125,
"power_code2": 4.8607875,
"ac_power_code2": 0.5221999573437506,
"rms_code": 2.204719369897221,
"peak_magnitude_code": 4.47213595499958,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 6.14323360311441,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00024303937499999998,
"ac_rms_code": 0.7226340410911671
}
},
{
"label": "FINAL_GUARD",
"tx_relative_start_sample": 5440000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 9563520,
"metrics": {
"samples": 160000,
"mean_i": 0.958375,
"mean_q": 1.83606875,
"power_code2": 4.81993125,
"ac_power_code2": 0.5303001546484385,
"rms_code": 2.195434182570728,
"peak_magnitude_code": 4.47213595499958,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 6.179891520223454,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002409965625,
"ac_rms_code": 0.7282171068084288
}
}
],
"background_summary": {
"ac_power_min_code2": 0.5159038571874985,
"ac_power_max_code2": 0.5303001546484385,
"ac_rms_min_code": 0.7182644757939087,
"ac_rms_max_code": 0.7282171068084288,
"maximum_to_minimum_ac_power_db": 0.11952978854087751,
"stability_rule_db": 3.0,
"stable": true
},
"comparisons": [
{
"comparison": "L1/L0",
"tx_input_difference_db": 5.9772704691441785,
"rx_matched_power_difference_db": 5.959769689089129,
"linearity_error_db": -0.01750078005504907,
"tx_amplitude_ratio": 1.9900478704552953,
"rx_matched_amplitude_ratio": 1.9860422557090833
},
{
"comparison": "L2/L1",
"tx_input_difference_db": 5.998157271536577,
"rx_matched_power_difference_db": 5.828887063637578,
"linearity_error_db": -0.16927020789899938,
"tx_amplitude_ratio": 1.9948390610676463,
"rx_matched_amplitude_ratio": 1.9563400830193338
},
{
"comparison": "L3/L2",
"tx_input_difference_db": 5.998257379520232,
"rx_matched_power_difference_db": 6.020419771848732,
"linearity_error_db": 0.022162392328500147,
"tx_amplitude_ratio": 1.9948620524335567,
"rx_matched_amplitude_ratio": 1.9999585213327857
}
],
"total_comparison": {
"comparison": "L3/L0",
"tx_digital_power_difference_db": 17.97368512020099,
"rx_matched_power_difference_db": 17.80907652457544,
"total_linearity_error_db": -0.16460859562555186,
"tx_amplitude_ratio": 7.9192536969014835,
"rx_matched_amplitude_ratio": 7.770586982689514
},
"classification": {
"case": "LINEAR_BUT_WEAK",
"rules_fixed_before_rf": {
"linear_max_abs_error_db": 1.0,
"compression_upper_step_error_at_most_db": -1.5,
"weak_l3_matched_to_residual_below_db": 3.0,
"healthy_l3_matched_to_residual_at_least_db": 6.0
}
},
"capture_valid": true,
"capture_invalid_reasons": [],
"tx_underruns_maximum": 0,
"tx_underruns_final": 0,
"rx_overruns_maximum": 0,
"rx_overruns_final": 0,
"rx_clipping": false
}