JM k
JM k

Reputation: 1

Matlab question. What is this fft code doing?

I am new to Matlab and performing signal processing. I am trying to understand what this code is doing? How and why are we determining the indexNyquist and spectrum?

spectrum = fft(Signal,k);              %generate spetrum of signal with FFT to k points
indexNyquist = round(k/2+1);        %vicinity of nyquist frequency        
spectrum = spectrum(1:indexNyquist);       %truncate spectrum to Nyquist frequency
spectrum = spectrum/(length(Signal));      %scale spectrum by number of points  
spectrum(2:end) = 2 * spectrum3(2:end);  %compensate for truncating negative frequencies, but not DC component

Upvotes: 0

Views: 110

Answers (1)

Paul R
Paul R

Reputation: 213170

For a purely real input signal the corresponding FFT will be complex conjugate symmetric about the Nyquist frequency, so there is no useful additional information in the top N/2 bins. We can therefore just take the bottom N/2 bins and multiply their magnitude by 2 to get a (complex) spectrum with no redundancy. This spectrum represents frequencies from 0 to Nyquist (and their aliased equivalent frequencies).

Note that bin 0 (0 Hz aka DC) is purely real and does not need to be doubled, hence the comment in your Matlab code.

Upvotes: 1

Related Questions