Mercurial > hg > pmhd
annotate extra/FFT of a Simple Sinusoid.m @ 13:844d341cf643 tip
Back up before ISMIR
author | Yading Song <yading.song@eecs.qmul.ac.uk> |
---|---|
date | Thu, 31 Oct 2013 13:17:06 +0000 |
parents | 6840f77b83aa |
children |
rev | line source |
---|---|
yading@10 | 1 % Example 1: FFT of a DFT_Sinusoid |
yading@10 | 2 |
yading@10 | 3 % Parameters: |
yading@10 | 4 N=64; % Must be a power of two |
yading@10 | 5 T=1; % Set sampling rate to 1 |
yading@10 | 6 A=1; % Sinusoidal Amplitude |
yading@10 | 7 phi=0; % Sinusoidal phase |
yading@10 | 8 f=0.25; % Frequency (cycles/sample) |
yading@10 | 9 n=[0:N-1]; % Discrete Time axis |
yading@10 | 10 x=A*cos(2*pi*n*f*T+phi); % Sampled sinusoid |
yading@10 | 11 X=fft(x); % Spectrum |
yading@10 | 12 |
yading@10 | 13 % Plot time data: |
yading@10 | 14 figure(1); |
yading@10 | 15 subplot(3,1,1); |
yading@10 | 16 plot(n,x,'*k'); |
yading@10 | 17 ni= [0:.1:N-1]; % Interpolated time axis |
yading@10 | 18 hold on; |
yading@10 | 19 plot(ni,A*cos(2*pi*ni*f*T+phi),'-k'); grid off; |
yading@10 | 20 title('Sinusoid at 1/4 the Spampling Rate'); |
yading@10 | 21 xlabel('Time (samples)'); |
yading@10 | 22 ylabel('Amplitude'); |
yading@10 | 23 text(-8,1,'a)'); |
yading@10 | 24 hold off; |
yading@10 | 25 |
yading@10 | 26 % Plot spectral magnitude; |
yading@10 | 27 magX= abs(X); |
yading@10 | 28 fn=[0:1/N:1-1/N]; %Normalized frequency axis |
yading@10 | 29 sublplot(3,1,2); |
yading@10 | 30 stem(fn,magX,'ok');grid on; |
yading@10 | 31 xlabel('Normalized Frequency(cycles per sample))'); |
yading@10 | 32 ylabel('Magnitude(Linear)'); |
yading@10 | 33 text(-.11,40,'b)'); |
yading@10 | 34 |
yading@10 | 35 % Same thing on a dB scale: |
yading@10 | 36 spec=20*log10(magX); %Spectral magitude in dB |
yading@10 | 37 subplot(3,1,3); |
yading@10 | 38 plot(fn,spec,'--ok'); grid on; |
yading@10 | 39 axis([0 1 -350 50]); |
yading@10 | 40 xlabel('Normalized Frequency (ccles per sample))'); |
yading@10 | 41 ylabel('Magnitude(dB)'); |
yading@10 | 42 text('Magnitude(dB)'); |
yading@10 | 43 text(-.11,50, 'c)'); |
yading@10 | 44 cmd=['print -deps ', '../eps/example1.eps']; |
yading@10 | 45 disp(cmd); eval(cmd); |