MATLAB Answers

Vera
0

how to set the sampling frequency and the time vector for an aperiodic signal while FFT and IFFT

Asked by Vera
on 20 May 2013
I need to plot x=e^(-t/2*tau) * sin(2*pi*f0*t) and then do the FFT, and IFFT to come back. f0=1 GHz while tau=2 micro secs While evaluating the function x, it gives me all values zero. I dont know why... I am not sure how to set the Fs (sampling frequency) and N (the length). Please help me as soon as you can. Here below some code.
T = 1/200; fs = 1 / T; %fs=150 N = 512; %t=0:T:1; t = (0:N-1) * T;
tau = 2*10^-6; %sec fo=1*10^9; % 1 GHz
x = (exp(1).^( -t./(2*tau) ) ) .* sin(2*pi*fo*t); %exp(1)=e %The DFT approximation to the CTFT is given by X_DFT = T * fft( x ); df = fs / N; f = df .* (0:(N-1)); w = 2 * pi * f; %or for a symmetric spectrum X_DFT2 = fftshift( X_DFT ); f2 = df .* ((-N/2):(N/2-1)); w2 = 2 * pi * f2; %The exact CTFT and DTFT are fa = linspace( 0 , 2 * fs , 1000 ); wa = 2 * pi * fa; fa2 = linspace( -1 * fs , 1 * fs , 1000 ); wa2 = 2 * pi * fa2; X_CTFT = 1.0 ./ ( a + 1i .* wa ); X_CTFT2 = 1.0 ./ ( a + 1i .* wa2 ); X_DTFT = T * 1.0 ./ ( 1 - exp( -1i .* wa .* T) .* exp( -a .* T ) ); X_DTFT2 = fftshift( X_DTFT );
%Plotting the asymmetric transforms
figure( 1 ); plot ( f , abs( X_DFT ) , 'r-o' ); hold on; plot( fa , abs( X_CTFT ) , 'b-' ); plot( fa , abs( X_DTFT ) , 'g-' ); xlabel( 'f (Hz)' ); ylabel( '|X(f)|' ); title( '|X(f)|' ); axis( [ 0 400 0 0.12] ); legend( 'CTFT estimated from DFT' , 'Analytic CTFT' , 'Analytic DTFT' ); hold off; print( 'ft_mag.eps' , '-depsc' );
figure(2); plot(t,x);
Thanks to all for any help you can provide to me.

1 Answer

Answer by Dr. Seis
on 20 May 2013
 Accepted Answer

For your second time sample [ t(2) = 0.005 ], your exponential [ exp(-0.005/(4*10^-6)) ] is equivalent to exp(-1250), which is basically 0.

  3 Comments

thanks Elige.
Would you mind if you explain to me how it works in general, based on what I do define the fs.
I am not yet into FFT and IFFT, just started :|
Any clearance might be useful to me.
Your tau is a very small number... the smaller tau is the faster your exponential function will fall to zero. The way you have it set up, your sample interval is much, much too big. Between the first and second time sample, your time function has already fallen to (pretty much) zero. So you need to make your T a lot smaller (i.e., 1/(2*10^9)). But when you do this, you will see that your tau is actually quite big for the frequency f0 of your sine wave (it takes many 100s of oscillations before you begin to notice any changes in the amplitude of the sine wave). My suggestion is to be mindful of tau (controls the amplitude falloff), T (controls the interval between time samples), and f0 (center frequency of your sine wave) because these numbers will control whether you see reasonable values (when you populate x)... or no values... or garabage values.
My suggestion is to step back and look at an example of what you are trying to accomplish with values of tau, T, and f0 that are all parameterized appropriately (in a relative sense). For example try:
T = 1/200;
fs = 1 / T;
N = 512;
t = (0:N-1) * T;
tau = .1; %sec
f0=10; % 10 Hz
x = (exp(1).^( -t./(2*tau) ) ) .* sin(2*pi*f0*t);
plot(t,x);
thanks a lot Elige.
I will definitely step back and look more carefully at all these aspects.
:)

Sign in to comment.