Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Signal Reconstruction after FFT

Status
Not open for further replies.

youngguns21

Member level 2
Joined
Jun 7, 2010
Messages
42
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,630
Hi everyone.
Hoping someone has the time to explain this to me.

After taking an N-point FFT, I'm left with the Fourier Coeff's of each frequency bin and can calculate the fequency with a little math. No problem. But if I try to reconstruct the original signal, it always seems to be shifted in frequency. Will someone please help me understand?

Also, say I use a 0-padded FFT, like N=1024 and signal is only 401, how in the world do I reconstruct that signal?!?!

code:
Code:
% basic signal
clear all
close all
clc
set(0,'DefaultFigureWindowStyle','docked')

dt = .01; %Discrete time step
Fs = 1/dt; %Sampling frequency
m = 401; %# of points in time signal
t = [0:(m-1)]*dt; %Time vector
x = 2*cos(2*pi*15*t); %Basic signal

subplot(4,1,1)
plot(t,x) 
xlabel('time(s)'),ylabel('Amp(v)')

To = max(t) - min(t); %fundamental period
fo = 1/To; %fundamental freq
wo = 2*pi*fo; %fundamental freq (radians)

%% Looking at entire signal
% assume entire signal is periodic w/ freq fo.
% Using FFT to find Ck's

N = length(x); %Aliasing will occur when this # is close to 
%the same length as the entire signal. Best choice 
%for the amount of Ck's to find is 1/2*length of
%signal. 
% N = 2^10;
F = fft(x,N); %Take N point FFT
f = Fs*[0:(N-1)]/N; %create frequency bins

% F = F(1:(N-1)/2);
% f = f(1:(N-1)/2);
F = F(1:m); %Use FFT points up to length of signal
f = f(1:m); %Use frequency points up to length of signal

an = 2/N*real(F); %Find Fourier Coefficients
an(1) = an(1)/2;
bn = -2/N*imag(F);
D = an + 1j*bn; %Combined FC's

subplot(4,1,2)
stem(an), hold on
stem(bn,'-xr')
xlabel('Ck index'),ylabel('Ck')
subplot(4,1,3)
stem(f,abs(D))
xlabel('Freq(Hz)'),ylabel('Mag Ck')

%% Recreate the signal

% t2 = linspace(0,To,length(F));
% t2 = 0:dt:To;
% t2 = t;
t2 = 0:dt:To;
X = ones(size(t));
X = an(1)*X;
for i = 1:200 %1:(length(F)-1)/2
X = X + an(i+1)*cos((i+1)*wo*t2) + bn(i+1)*sin((i+1)*wo*t2);
end

subplot(4,1,1)
hold on, plot(t,X,'--r'),axis tight
xlabel(''),ylabel('Amp(v)')
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top