Files
PLFM_RADAR/14_RADAR_Old_version/Firmware/Python/Angle_Estimation
T
2026-03-19 01:11:32 +00:00

47 lines
1.9 KiB
Plaintext

import numpy as np
# Constants
MATRIX_SIZE = 83 # 83x83 matrix
BUFFER_SIZE = MATRIX_SIZE * MATRIX_SIZE # 6889 elements
AZIMUTH_RANGE = (-41.8, 41.8) # Azimuth range
ELEVATION_RANGE = (41.8, -41.8) # Elevation range
def generate_angle_grid():
"""Generate azimuth and elevation matrices."""
azimuth_values = np.linspace(AZIMUTH_RANGE[0], AZIMUTH_RANGE[1], MATRIX_SIZE)
elevation_values = np.linspace(ELEVATION_RANGE[0], ELEVATION_RANGE[1], MATRIX_SIZE)
azimuth_matrix, elevation_matrix = np.meshgrid(azimuth_values, elevation_values)
return azimuth_matrix, elevation_matrix
def process_radar_data(buffer):
"""Convert buffer into an 83x83 matrix, find max value position, and get azimuth/elevation."""
if len(buffer) != BUFFER_SIZE:
raise ValueError(f"Invalid buffer size! Expected {BUFFER_SIZE}, got {len(buffer)}")
# Reshape buffer into [83][83] matrix
matrix = np.array(buffer).reshape((MATRIX_SIZE, MATRIX_SIZE))
# Find position of the max value
max_index = np.unravel_index(np.argmax(matrix), matrix.shape)
# Generate azimuth and elevation mapping
azimuth_matrix, elevation_matrix = generate_angle_grid()
# Get azimuth and elevation for max value position
max_azimuth = azimuth_matrix[max_index]
max_elevation = elevation_matrix[max_index]
return matrix, max_index, max_azimuth, max_elevation
# Example: Simulated buffer with random values (Replace with actual RADAR data)
np.random.seed(42) # For reproducibility
buffer = np.random.rand(BUFFER_SIZE) # Simulated intensity values
# Process the buffer
matrix, max_pos, max_azimuth, max_elevation = process_radar_data(buffer)
# Output results
print(f"Max value found at matrix position: {max_pos}")
print(f"Estimated Target Angles -> Azimuth: {max_azimuth:.2f}°, Elevation: {max_elevation:.2f}°")