ДПФ временной области для функции шага

Я недавно работал над DFT в Matlab, вот мой код в Matlab. какая часть моего кода имеет проблемы, моя выборка неверна ??? Буду благодарен, если вы ответите на мой вопрос:

dt = 0.01;      %sampling time interval
Fs = 1/dt;       %sampling rate
t = 0:dt:45;     %Time vector
t0 = 5;          %duration of applied stress
N = length(t);   %number of sample points
y_timedomain = heaviside(t)-heaviside(t-t0);     %the step function
figure (1)
plot(y_timedomain)
axis([-100,1000,-0.2,1.2]);
y_freqDomain=abs(fft(y_timedomain));     % fft of step funcion, y(t)
z = fftshift(y_freqDomain);              % DFT and shift center to zero
figure (2)
plot(linspace(-10,10,length(y_freqDomain)),z)
xlabel('Sample Number')
ylabel('Amplitude')
title('Using the Matlab fft command')
grid
axis([-.3,.3,0,1000]);

Между тем, у меня есть 2 вопроса об этом коде: 1 - моя пошаговая функция в 0 раз имеет величину 1/2, но я хочу, чтобы моя пошаговая функция в 0 раз была 0 вместо 1/2 (например, в форме прямоугольника), но я не знаю как это исправить ??? 2- когда мы делаем DFT, мы должны всегда использовать «shift FFT» ???? если вы дадите мне свой совет по поводу этого кода, я буду очень благодарен.

Ответы на вопрос(1)

Ваш ответ на вопрос