Wrong output graph when using ifft on rectangular pulse?
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
When doing an inverse fourier transform of a rectpuls function, the output in the time domain has a sinc that has been shifted and split. How canI fix this so that the output is a sinc centred at t=0 as you would expect. Here is my code:
--------------------------------------------
% Define the frequency axis
S = 1000; % Change this to your desired number of samples
f = linspace(-10, 10, S); % Frequency vector with a high sampling rate
% Define H(f)
H = rectpuls(f, 2);
% Perform the inverse Fourier transform to get the time signal
h = ifft(ifftshift(H));
% Calculate the time axis based on the new value of S
Fs = 1 / (f(2) - f(1));
dt = 1 / Fs;
t = (-Fs/2:dt:Fs/2-dt); % Time axis
% Create a figure with two subplots
figure;
% Plot H(f) in the frequency domain (blue)
subplot(2, 1, 1);
plot(f, H, 'b');
title('Frequency Domain');
xlabel('Frequency (f)');
ylabel('Magnitude');
grid on;
% Plot the corresponding time signal for H in the time domain (blue)
subplot(2, 1, 2);
plot(t, real(h), 'b');
title('Time Domain');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
-------------------------------------------
Here is the output plots I get, where the sinc is split and shifted:

0 Kommentare
Siehe auch
Kategorien
Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
