Fourier transform of impulse function

27 vues (au cours des 30 derniers jours)
friet
friet le 28 Fév 2017
Commenté : Hira Asghar le 25 Fév 2018
I calculated the Fourier transform of a pulse function(figure 1) Using the fft function. However The fft result if kind of weird. Can anyone check if my code is right. //Thanks
clc
clear all
close all
t1=7.0e-08;
sigma=1e-08;
t=linspace(0,4.0000e-7,1000);
P=exp(-(t-t1).^2./sigma.^2);
P_FT=fft(P); %fourier transform of P
figure(1)
plot(t*10^6,P);
grid on
xlabel('time[\mus]')
ylabel('amplitude[a.u]')
figure(2)
plot(P_FT);
grid on
  1 commentaire
Hira Asghar
Hira Asghar le 25 Fév 2018
Can u explain your signal 'p'?

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 28 Fév 2017
Modifié(e) : Star Strider le 28 Fév 2017
The Fourier transform of an impulse function is uniformly 1 over all frequencies from -Inf to +Inf. You did not calculate an impulse function.
You calculated some sort of exponential function that will appear as an exponential function in the Fourier transform.
Your slightly modified code:
t1=7.0e-08;
sigma=1e-08;
L = 1000;
t=linspace(0,4.0000e-7,L);
Ts = mean(diff(t));
Fs = 1/Ts;
Fn = Fs/2;
P=exp(-(t-t1).^2./sigma.^2);
P_FT=fft(P)/L; %fourier transform of P
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:length(Fv); % Index Vector
figure(1)
plot(t*1E+6, P);
grid on
xlabel('time[\mus]')
ylabel('amplitude[a.u]')
figure(2)
plot(Fv, abs(P_FT(Iv))*2);
grid on
The correct representation of the Fourier transform of your signal is in figure(2).
  2 commentaires
friet
friet le 28 Fév 2017
Modifié(e) : friet le 28 Fév 2017
Hi Star Strider! Thanks for your answer. I understand it now. I have further question. I have a function which is frequency and space dependent and I post my question a week ago here https://www.mathworks.com/matlabcentral/answers/326466-fourier-transform-space-dependent-function however, didnt get any answer. With your help today I get closer to solve my problem however, can't makes it to the final answer. Can u please help me to compute the space and frequency dependent function. I have tried the following code.
clc
clear all
close all
t1=7.0e-08;
sigma=1e-08;
L = 1000;
t=linspace(0,4.0000e-7,L);
Ts = mean(diff(t));
Fs = 1/Ts;
Fn = Fs/2;
P=exp(-(t-t1).^2./sigma.^2);
P_FT=fft(P)/L; %fourier transform of P
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:length(Fv); % Index Vector
figure(1)
plot(Fv, abs(P_FT(Iv))*2);
grid on
xlabel('f[Hz]')
ylabel('amplitude[a.u]')
%................................................
z=linspace(0,2*10^-3,1000); %[m]
v=2000;
alpha= 5; %[Neper/cm]
beta=(2*pi*Fv/v); %[Hz]
figure(3)
plot(Fv*10^-6,beta*0.01)
xlabel('f[MHz]')
ylabel('alpha[N/cm]')
pfz=zeros(length(z),length(Fv));
pft=zeros(length(z),length(Fv));
for j_f=1:length(Fv)
for i_z=length(z)
pfz(i_z,j_f)=P_FT(j_f).*exp(-alpha.*z(i_z)).*exp(1i.*beta(j_f).*z(i_z));
end
end
for i=length(z)
pft(i,:)=ifft(pfz(i,:));
end
figure(4)
plot(z,abs(pft))
Star Strider
Star Strider le 28 Fév 2017
I answered you in the email you sent. The essence of that being that you can use Laplace transforms to solve partial differential equations in time-domain and space-domain by converting them to ordinary differential equations in s-domain and space-domain. That is relatively straightforward with Laplace transforms but much more difficult with Fourier transforms, since they can involve complex frequency variables. Those are much more difficult to work with.
I do not understand the problem you want to solve.

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 28 Fév 2017
plot() with one argument that is complex-valued (hint!) plots real() of the parameter against imag() of the parameter.

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by