フィルターのクリア

Fourier transform of impulse function

27 ビュー (過去 30 日間)
friet
friet 2017 年 2 月 28 日
コメント済み: Hira Asghar 2018 年 2 月 25 日
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 件のコメント
Hira Asghar
Hira Asghar 2018 年 2 月 25 日
Can u explain your signal 'p'?

サインインしてコメントする。

採用された回答

Star Strider
Star Strider 2017 年 2 月 28 日
編集済み: Star Strider 2017 年 2 月 28 日
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 件のコメント
friet
friet 2017 年 2 月 28 日
編集済み: friet 2017 年 2 月 28 日
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 2017 年 2 月 28 日
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.

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 2 月 28 日
plot() with one argument that is complex-valued (hint!) plots real() of the parameter against imag() of the parameter.

カテゴリ

Help Center および File ExchangeSpectral Measurements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by