Проанализируйте IQ-сигнал с радара (RF) в Python - нужна помощь :( - PullRequest
0 голосов
/ 25 марта 2020

У меня есть несколько измерений I и Q с небольшого CW-радара. Желание проанализировать данные и определить скорость измеряемого объекта после записи их в массивы (I-массив и Q-массив).

На данный момент я получил python код:

    import numpy as np
    from numpy.fft import fft, fftshift

    ...



    Nm_CW = 200
    Fs_CW = 25000
    f0 = 5
    f_0 = 24 + f0/1000

   ComplexVector = I + 1j*Q

                            # Apply the selected window to the complex vector previous to the FFT calculation
                            ComplexVector = ComplexVector * np.hanning(Nm_CW) * 2 / 3.3

                            # 
                            N_FFT = 4096
                            c = 299792458
                            max_velocity = c/(2*f_0*1000000000) * (Fs_CW/2)
                            SpeedUnits_Selected = self.SpeedUnits_CW.currentIndex()
                            if (SpeedUnits_Selected == 1):
                                SpeedFactor = 3.6
                                max_velocity *= SpeedFactor
                                x_axis_label = 'Velocity (km/h)'
                                self.label_MaximumSpeed.setText('Maximum Velocity (km/h)')
                            elif (SpeedUnits_Selected == 2):
                                SpeedFactor = 2.23694
                                max_velocity *= SpeedFactor
                                x_axis_label = 'Velocity (mph)'
                                self.label_MaximumSpeed.setText('Maximum Velocity (mph)')
                            else:
                                SpeedFactor = 1
                                x_axis_label = 'Velocity (m/s)'
                                self.label_MaximumSpeed.setText('Maximum Velocity (m/s)')

                        FrequencyDomain = 2*np.absolute(fftshift(fft(ComplexVector/Nm_CW, N_FFT)))
                        self.MaximumSpeed.setValue(max_velocity)
                        x_axis = np.linspace(-max_velocity, max_velocity, num = N_FFT)

                        FrequencyDomain[int(N_FFT/2)] = FrequencyDomain[int(N_FFT/2) - 1]
                        FrequencyDomain = 20 * np.log10(FrequencyDomain)

Так что я не знаю, что мне делать для следующих шагов. Я в основном знаю, что я должен найти пики, но я не знаю, как это сделать. Как я могу определить скорость и так далее?

Спасибо за помощь

...