title: Amplitude in Frequency domain not matching time domain signal after FFT in python. Explanation?
body: <p><a href="https://i.stack.imgur.com/RCtos.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/RCtos.png" alt="enter image description here" /></a></p>
  <p>I am trying to create a Power spectral density function in python that outputs the amplitude spectral density and cumulative power spectral density graphs. I am using <code>scipy.fft</code> to compute the FFT of my output data. Then an operation to compute the PSD. The code can be seen below for this.</p>
  <pre><code>df = nyquistFreq/(N/2-1) #frequency increment
  spacing = 1
  freq = df*(np.linspace(start = 0, stop = (N/2+1)*spacing, num = int((N/2)*spacing),  endpoint= True)) #creatiing frequency vector
  fftData = fft(output.values) #taking the fft of the data
  Pxx = (2*(pow(abs(fftData[1:int((N/2+1))]/N), 2)/df))
  </code></pre>
  <p>I am then running this function with a sine signal with an amplitude of 68 and a frequency of 21</p>
  <pre><code>N = 10000
  sampleTime = 0.0001
  timE = np.linspace(0, N*sampleTime, N, endpoint = False)
  amp = 68*np.sin(2*np.pi*21*timE) 
  </code></pre>
  <p>Values on plot are hard to see, but the peak frequency has an amplitude of 48.08326112068523, not 68. This is a reduction of 1/sqrt(2) that has been constant no matter what amplitude I've used. Is there a way I can get around this amplitude reduction, so that the amplitude in the frequency domain is that of the time domain? Possibly might have something to do with the way python performs FFT, spectral scaling/density.</p>