4
$\begingroup$

I've created a signal by adding a sine wave and a cosine wave using R:

# number of samples
N <- 1000    

# time period
TT <- 2       

# sampling frequency (number of samples by unit of time)
fs <- N / TT  

# vector of sampling time points
stp <- seq(from=0, to=TT - 1 / fs, by=1 / fs)

# 2 Hz sine wave with peak amplitude 2
sn1 <- 2 * sin(2 * pi * 2 * stp)

# 5 Hz cosine wave with peak amplitude 3
sn2 <- 3 * cos(2 * pi * 5 * stp)

# input signal
sn <- sn1 + sn2

enter image description here

Using the Fourier transform, I can see that the signal is made up of two waves with amplitudes 2 and 3 and frequencies 2 and 5, respectively.

fou <- fft(sn)
N <- length(fou)
fou <- fou[2:((N / 2) + 1)]
freq <- (1:(N / 2)) / TT
ampl <- Mod(fou) / length(fou)
plot(freq, ampl)

enter image description here

Question: How do I know that the wave with frequency 2 is a sine wave and that the wave with frequency 5 is a cosine wave?

$\endgroup$

closed as off-topic by Dilip Sarwate, jbowman, Xi'an, COOLSerdash, John Feb 3 '15 at 22:10

This question appears to be off-topic. The users who voted to close gave this specific reason:

If this question can be reworded to fit the rules in the help center, please edit the question.

  • 3
    $\begingroup$ You've plotted the amplitude: ampl <- Mod(fou) / length(fou), if you want to distinguish between a sine and a cosine you also need to look at the phase plot. Regarding the 'reconstruction', have you tried just using an inverse FFT? e.g. artax.karlin.mff.cuni.cz/r-help/library/signal/html/ifft.html $\endgroup$ – Dan Feb 3 '15 at 15:22
6
$\begingroup$

Sine and Cosine are the same wave shifted by $\pi/2$ in phase $$\cos(x)=\sin(x+\pi/2)$$. Fourier transform returns you a complex number for each frequency. This number has the amplitude and the angle (phase). It's basically a set of Sine waves with amplitudes and phases. Equivalently, you can re-write them as a sum of Sine and Cosine waves of different amplitudes.

Example:

phase <- Arg(fou) 
sx=ampl[4]*cos(2*pi*freq[4]*stp+phase[4])+ampl[10]*cos(2*pi*freq[10]*stp+phase[10])
plot(sx)
$\endgroup$
  • $\begingroup$ Thanks for the answer. Could you further help me to rebuild the signal above using the output of fft()? $\endgroup$ – user7064 Feb 3 '15 at 15:19
  • 1
    $\begingroup$ You got the frequency already. All you need is a phase, which is an angle of the complex number. $\endgroup$ – Aksakal Feb 3 '15 at 15:22
  • $\begingroup$ Thanks :-) Last thing: why do you use cosines in 'sx' rather than sines? $\endgroup$ – user7064 Feb 3 '15 at 15:50
  • $\begingroup$ Try sines, but you'll have to add $\pi/2$ to the phase. It's just the way sinces and cosines are add up in FFT. $\endgroup$ – Aksakal Feb 3 '15 at 15:53
  • $\begingroup$ Perfect :-) (+1) $\endgroup$ – user7064 Feb 3 '15 at 15:53

Not the answer you're looking for? Browse other questions tagged or ask your own question.