Project

General

Profile

Actions

Data format » History » Revision 20

« Previous | Revision 20/21 (diff) | Next »
Anonymous, 03/05/2020 04:02 PM


Lecture des données du radar PoSAR-X

Archive 2019_07_12_14_12_21

Présentation

L'achive 2019_07_12_14_12_21 contient les fichiers préfixés "record" enregistrés le 12 juillet 2019 lors de la première campagne de mise au point du radar PoSAR-X sur la zone aviation de Monterfil.

  • Chaque fichier préfixé "record" contient des données temporelles échantillonnées à 20MHz pendant une seconde, tous les fichiers sont contigus
  • Chaque échantillon est enregistré au format uint16
  • Le signal RF est un signal triangulaire continu, une rampe montante de 500us suivie d'une rampe descendante de 500us
  • Chaque fichier commence par le signal reçu pendant une rampe montante

Procédure

La fonction de lecture d'un fichier de données est la suivante:

def readFileADLINKCh0( filename, samplesPerFile, timeSerie_A ):
    fd = open(filename,'rb')

    dum = np.fromfile(fd, dtype = np.uint16)

    timeSerie_A[:] = dum[:]

    fd.close()

On fait une boucle pour lire tous les fichiers et créer une matrice contenant une ligne par fichier:

firstFile = 0
nbFiles = 59
lastFile = firstFile + nbFiles - 1
firstBuffer = firstFile * buffersPerFile
lastBuffer = (nbFiles-1) * buffersPerFile + firstBuffer

scalingFactor = 2 / 65535 
offset = -32768

timeSerie_A = np.zeros( samplesPerFile )
adc_A = np.zeros( (nbFiles, samplesPerFile) )

for k in range( nbFiles ):

    # read the data
    nb = str( int( k * buffersPerFile + firstBuffer) )
    filename = data_dir + "/record" + nb + ".bin" 
    readFileADLINKCh0( filename, samplesPerFile, timeSerie_A )

    print("k = {}, block = {} / {}".format(k, nb, lastBuffer))

    adc_A[ k, : ] = (timeSerie_A + offset) * scalingFactor

Les données étant lues, on remet en forme la matrice, une ligne par période de signal:

A_reshaped = adc_A.reshape(nbFiles * rampsPerFile, samplesPerRamp)

Ensuite, on ne garde que la partie du signal correspondant aux rampes montantes:

samplesPerDownRamp = int(samplesPerRamp/2)
A_rampUp = A_reshaped[:, 0:samplesPerDownRamp]

On obtient ainsi une matrice contenant toutes les rampes montantes.

Note: dans l'exemple 2019_07_12_14_12_21, les paramètres sont les suivants:

<?xml version="1.0" encoding="UTF-8"?>
<posarmc version="2.0">
    <posarV2>
        <rampsPerBuffer value="500" units="-"/>
        <bufferSize value="20000000" units="byte"/>
        <buffersPerFile value="2" units="byte"/>
        <rampsPerFile value="1000" units="-"/>
        <fileSize value="4e+7" units="byte"/>
        <samplingFrequency value="2e+7" units="Hz"/>
        <samplesPerRamp value="20000" units="-"/>
        <skipNSamples value="0" units="-"/>
        <rampPeriod value="1000" units="-"/>
        <startFrequency value="9800" units="-"/>
        <stopFrequency value="10100" units="-"/>
    </posarV2>
</posarmc>

Updated by Anonymous over 4 years ago · 20 revisions