Issue with Time-Domain Shifting Using Fourier Shift Property in MATLAB
I am trying to implement time-domain shifting using the Fourier shift property. Below is my MATLAB code:
% Parameter Setting
R = 618e3;
V = 7600;
lambda = 0.0313;
Fa = 5000;
N = 10000;
time_delay = 6.135e-5;
% Axis Setting
ta = ( -N/2 : N/2-1 )/Fa;
fa = ( -N/2 : N/2-1 )*( Fa/N );
s1 = exp(-1j*2*pi/lambda*(V^2*(ta + time_delay).^2)/R);
s2 = exp(-1j*2*pi/lambda*(V^2*(ta – time_delay).^2)/R);
% s1 Shifting
s1 = fftshift(fft(s1,N));
s1 = s1.*exp(-1j*2*pi.*fa.*time_delay);
s1 = ifft(ifftshift(s1),N);
% s2 Shifting
s2 = fftshift(fft(s2,N));
s2 = s2.*exp(1j*2*pi.*fa.*time_delay);
s2 = ifft(ifftshift(s2),N);
Result = s1 – s2;
figure(1);
plot(ta,abs(Result)); xlabel("t(s)");
title(‘After Substraction’);
According to the Fourier shift theorem, the signals s1 and s2 should be identical. However, the result shows that the values in the center region are small, while the values on both sides are unexpectedly large.
I am not sure which part of my implementation is incorrect. I would greatly appreciate any guidance or suggestions to help me resolve this issue.
Thanks!I am trying to implement time-domain shifting using the Fourier shift property. Below is my MATLAB code:
% Parameter Setting
R = 618e3;
V = 7600;
lambda = 0.0313;
Fa = 5000;
N = 10000;
time_delay = 6.135e-5;
% Axis Setting
ta = ( -N/2 : N/2-1 )/Fa;
fa = ( -N/2 : N/2-1 )*( Fa/N );
s1 = exp(-1j*2*pi/lambda*(V^2*(ta + time_delay).^2)/R);
s2 = exp(-1j*2*pi/lambda*(V^2*(ta – time_delay).^2)/R);
% s1 Shifting
s1 = fftshift(fft(s1,N));
s1 = s1.*exp(-1j*2*pi.*fa.*time_delay);
s1 = ifft(ifftshift(s1),N);
% s2 Shifting
s2 = fftshift(fft(s2,N));
s2 = s2.*exp(1j*2*pi.*fa.*time_delay);
s2 = ifft(ifftshift(s2),N);
Result = s1 – s2;
figure(1);
plot(ta,abs(Result)); xlabel("t(s)");
title(‘After Substraction’);
According to the Fourier shift theorem, the signals s1 and s2 should be identical. However, the result shows that the values in the center region are small, while the values on both sides are unexpectedly large.
I am not sure which part of my implementation is incorrect. I would greatly appreciate any guidance or suggestions to help me resolve this issue.
Thanks! I am trying to implement time-domain shifting using the Fourier shift property. Below is my MATLAB code:
% Parameter Setting
R = 618e3;
V = 7600;
lambda = 0.0313;
Fa = 5000;
N = 10000;
time_delay = 6.135e-5;
% Axis Setting
ta = ( -N/2 : N/2-1 )/Fa;
fa = ( -N/2 : N/2-1 )*( Fa/N );
s1 = exp(-1j*2*pi/lambda*(V^2*(ta + time_delay).^2)/R);
s2 = exp(-1j*2*pi/lambda*(V^2*(ta – time_delay).^2)/R);
% s1 Shifting
s1 = fftshift(fft(s1,N));
s1 = s1.*exp(-1j*2*pi.*fa.*time_delay);
s1 = ifft(ifftshift(s1),N);
% s2 Shifting
s2 = fftshift(fft(s2,N));
s2 = s2.*exp(1j*2*pi.*fa.*time_delay);
s2 = ifft(ifftshift(s2),N);
Result = s1 – s2;
figure(1);
plot(ta,abs(Result)); xlabel("t(s)");
title(‘After Substraction’);
According to the Fourier shift theorem, the signals s1 and s2 should be identical. However, the result shows that the values in the center region are small, while the values on both sides are unexpectedly large.
I am not sure which part of my implementation is incorrect. I would greatly appreciate any guidance or suggestions to help me resolve this issue.
Thanks! fft, fourier shifting property MATLAB Answers — New Questions