DFT do domínio do tempo para a função de etapa

Eu tenho trabalhado em DFT no Matlab recentemente, aqui está o meu código no Matlab. qual parte do meu código tem problema, minha amostragem está errada ??? Ficarei grato se você responder minha pergunta:

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]);

Enquanto isso, eu tenho 2 perguntas sobre esse código: 1- minha função step no tempo 0, tem magnitude 1/2, mas quero que a função step no tempo 0 seja 0 em vez de 1/2 (como forma de retângulo), mas eu não sei como corrigi-lo ?? 2- quando fazemos DFT, devemos usar "shift FFT" sempre ???? se você me der seu conselho sobre esse código, ficarei muito agradecido.

questionAnswers(1)

yourAnswerToTheQuestion