www.pudn.com > voiceprocessingtoolbox.rar > fftApproximate04.m


% This example demos the effect of FFT approximation 
 
n=10; 
x=rand(n, 1); 
X=fft(x); 
 
sinusoidNum=5; 
sinusoid1(:,1)=X(1)*ones(length(1:n),1); 
sinusoid2(:,1)=X(1)*ones(length(1:0.1:n),1); 
legendStr={'Comp 0'}; 
for i=2:sinusoidNum 
	sinusoid1(:,i)=2*abs(X(i))*cos(2*pi*(0:n-1)'*i/n + angle(X(i))); 
	sinusoid2(:,i)=2*abs(X(i))*cos(2*pi*(0:0.1:n-1)'*i/n + angle(X(i))); 
	legendStr={legendStr{:}, ['Comp ', int2str(i-1)]}; 
end 
 
y1=sum(sinusoid1,2); 
y2=sum(sinusoid2,2); 
subplot(2,1,1) 
plot(1:n, x, 'o-', 1:n, y1, 'o-', 1:0.1:n, y2); 
legend('Original', 'Approximated'); 
grid on 
subplot(2,1,2) 
plot(0:n-1, sinusoid1, 'o'); 
hold on 
plot(0:0.1:n-1, sinusoid2); 
hold off 
grid on 
title(sprintf('%d sinusoidal components', sinusoidNum)); 
legend(legendStr{:});