docs: def plot_welch_perdiogram(x, fs, nperseg):
      '''Plot Welch perdiogram
  
      Args
      ----
      x: ndarray
          Signal array
      fs: float
          Sampling frequency
      nperseg: float
          Length of each data segment in PSD
      '''
      import scipy.signal
      import numpy
  
      # Generate a test signal, a 2 Vrms sine wave at 1234 Hz, corrupted by
      # 0.001V**2/Hz of white noise sampled at 10 kHz.
      N = len(x)
      time = numpy.arange(N) / fs
  
      # Compute and plot the power spectral density.
      f, Pxx_den = scipy.signal.welch(x, fs, nperseg=nperseg)
  
      plt.semilogy(f, Pxx_den)
      plt.ylim([0.5e-3, 1])
      plt.xlabel('frequency [Hz]')
      plt.ylabel('PSD [V**2/Hz]')
      plt.show()
  
      # If we average the last half of the spectral density, to exclude the peak,
      # we can recover the noise power on the signal.
      numpy.mean(Pxx_den[256:])  # 0.0009924865443739191
  
      # compute power spectrum
      f, Pxx_spec = scipy.signal.welch(x, fs, 'flattop', 1024,
                                       scaling='spectrum')
  
      plt.figure()
      plt.semilogy(f, numpy.sqrt(Pxx_spec))
      plt.xlabel('frequency [Hz]')
      plt.ylabel('Linear spectrum [V RMS]')
      plt.show()
  
      return None