0% ont trouvé ce document utile (0 vote)
2 vues5 pages

Code PDF

Le document présente un code Python pour le traitement de signaux radar, incluant l'importation de données, la compression en distance et azimutale, ainsi que la correction de la migration en distance. Des transformations FFT sont appliquées pour améliorer la qualité des données, suivies de visualisations des résultats. Les étapes incluent le prétraitement, la compression et l'affichage des données traitées sous forme de graphiques.

Transféré par

chakib8
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues5 pages

Code PDF

Le document présente un code Python pour le traitement de signaux radar, incluant l'importation de données, la compression en distance et azimutale, ainsi que la correction de la migration en distance. Des transformations FFT sont appliquées pour améliorer la qualité des données, suivies de visualisations des résultats. Les étapes incluent le prétraitement, la compression et l'affichage des données traitées sous forme de graphiques.

Transféré par

chakib8
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ANNEXE :

1 ## Importation des modules


2
3 import numpy as np
4
5 from [Link] import speed_of_light, pi
6
7 from [Link] import loadmat
8
9 from matplotlib import pyplot as plt
10
11
12 ## Importation du signal
13
14 data = loadmat('[Link]')
15
16 signal =[Link](data['signal'])
17
18 frequence = [Link](data['frequency'])
19
20 distance_centrale = [Link](data['range_center'])
21
22 ouverture_synthetique = [Link](data['synthetic_aperture'])
23
24 ouverture_reelle= [Link](data['aperture_length'])
25
26
27 ## Pré-traitement du signal pour la compression en distance
28
29 nAz, nRange = [Link]
30
31 nfft_Range = 16*2**[Link](np.log2(nRange))
32
33 nfft_Az = 2**[Link](np.log2(nAz))
34
35 fenetre_distance= speed_of_light/ (2 * (frequence[1] - frequence[0]))
36
37 distance_oblique= [Link](0,fenetre_distance, int(nfft_Range))
38
39 frequence_centrale =frequence[int(len(frequence)/2)]
40
41 longeur_d_onde = speed_of_light / frequence_centrale
42
43 coefficients = [Link](nRange)
44
45
46 ## Compression en distance
47
48 Hf=[Link](1j * 4.0 * pi*frequence/ speed_of_light *
distance_centrale[int(len(distance_centrale)/2)]) * coefficients
49
50 Sf = signal
51
52 data_correction=[Link]((nAz, int(nfft_Range)), dtype=complex)

1/5
53
54 for i in range(nAz):
55
56 data_correction[i, :] = [Link]([Link](Sf[i, :] * Hf,
int(nfft_Range)))
57
58 prf = 850
59 v_eff = 100
60 frequence=[Link](-(v_eff*nAz*(1/prf)/2), v_eff*nAz*(1/prf)/2 , nAz)
61
62
63 ## Résultat après la compression en distance
64
65
[Link](distance_oblique, frequence,
[Link](data_correction)/[Link]([Link](data_correction)), cmap='jet')
66
67 # Définis le titre et le nom des axes
68
69 [Link]('Données après la compression en distance', size=18)
70
71 [Link]('Range (m)', size=16)
72
73
[Link]('Position azimutale du radar (m)', size=16)
74
75
76
# Ajuste la taille des valeurs affichées sur les axes
77
78
79 plt.tick_params(labelsize=16)
80
81
82 # Affiche l'échelle d'amplitude
83
84 cbar = [Link]()
85
86 cbar.set_label('Amplitude normalisée')
87
88
89 # Affiche l'image
90
91 [Link]()
92
93
94
## Pré-traitement du signal pour la Correction de la Migration en Distance
95
96
97 rd_data=[Link]([Link](data_correction, axis=0), 0)
98
99 centre=distance_centrale[int(len(distance_centrale)/2)]
100
101 delta_distance_oblique = distance_oblique[1] - distance_oblique[0]
102
103 [nA, nR] = rd_data.shape
104
105 frequence=[Link](-0.5 * prf, 0.5 * prf, nA)

2/5
106 ## Correction de la Migration en Distance
107
108 # Calcul du déclage induit par le déplacement du radar
109
110 offsets=(1 / [Link](1 - (longeur_d_onde * frequence / (2 * v_eff) )**2) -
1)*centre
111
112
113 # Conversion du décalage en nombre de cases dans l'image
114
115 offsets=[Link](offsets/ delta_distance_oblique)
116
117 frequence = frequence * 5
118
119
120
# Création de l'image avec la correction du décalage
121
122
123 cmd_data = np.zeros_like(rd_data)
124
125 i = 0
126
127 for offset in offsets:
128
129 cmd_data[i,:] =[Link](rd_data[i, :], -int(offset))
130
131 i+= 1
132
133
134 ## Résultat après la CMD
135
[Link](distance_oblique,frequence,
[Link](cmd_data)/[Link]([Link](cmd_data)), cmap='jet')
136
137 [Link]([-0.5 * prf - 0.05 * prf, 0.5 * prf + 0.05 * prf])
138
139
140
141 # Définis le titre et le nom des axes
142
143
[Link]('Données après la CMD', size=18)
144
145
[Link]('Range (m)', size=16)
146
147
148 [Link]('Doppler (Hz)', size=16)
149
150
151 # Ajuste la taille des valeurs affichées sur les axes
152
153 plt.tick_params(labelsize=16)
154
155
156 # Affiche l'échelle d'amplitude
157
158 cbar = [Link]()

3/5
159 cbar.set_label('Amplitude normalisée')
160
161
162 # Affiche l'image
163
164 [Link]()
165
166
167
## Compression azimuthale
168
169
data_correction = [Link]([Link](cmd_data, 0), axis=0)
170
171
172 coefficients = [Link](nAz)
173
174 image=[Link]((int(nfft_Az), int(nfft_Range)), dtype=complex)
175
176 index_central = int([Link](len(distance_centrale) / 2))
177
178 i = 0
179
180 for sr in distance_oblique:
181
a=coefficients * [Link](1j * 4 * pi * frequence_centrale /
speed_of_light * ouverture_synthetique**2 / (distance_centrale[index_central]
+ sr))
182
183 af=[Link](a, int(nfft_Az))
184
185 image[:,i] =
[Link]([Link]([Link](data_correction[:,i], int(nfft_Az))*
af))
186
187 i += 1
188
189 distance_azimuth = [Link](-0.5 * ouverture_reelle * nAz / nfft_Az, 0.5 *
ouverture_reelle * nAz / nfft_Az, int(nfft_Az))
190
191
192 ## Résultat après la compression azimuthale
193
194 # En dessous de cette valeur d'amplitude en dB, le signal sera considéré
comme nul
195
196 filtre_amplitude = 35
197
198
199 [Link](distance_oblique, distance_azimuth + 45, 20 *
np.log10([Link](image)/[Link]([Link](image)) ), cmap='jet', vmin=-
abs(filtre_amplitude), vmax=0)
200
201 [Link]([-10, 10])
202
203
204 # Définis le titre et le nom des axes
205

4/5
206 [Link]('Données après la Compression azimutale', size=18)
207
208 [Link]('Range (m)', size=16)
209
210 [Link]('distance azimutale (m)', size=16)
211
212
213
# Ajuste la taille des valeurs affichées sur les axes
214
215
plt.tick_params(labelsize=16)
216
217
218
219 # Affiche l'échelle d'amplitude
220
221 cbar = [Link]()
222
223 cbar.set_label('Amplitude (dB)')
224
225
226 # Affiche l'image
227
[Link]()

5/5

Vous aimerez peut-être aussi