DFT del dominio del tiempo para la función de paso

He estado trabajando en DFT en Matlab recientemente, aquí está mi código en Matlab. ¿Qué parte de mi código tiene problemas, mi muestreo es incorrecto? Te agradeceré si respondes mi pregunta:

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

mientras tanto, tengo 2 preguntas sobre este código: 1- mi función de paso en 0 tiempo, tiene una magnitud de 1/2, pero quiero que mi función de paso en 0 sea 0 en lugar de 1/2, (como la forma del rectángulo), pero no se como corregirlo ??? 2- cuando hacemos DFT, ¿deberíamos usar siempre "shift FFT"? Si me das tu consejo sobre este código, estaré muy agradecido.

Respuestas a la pregunta(1)

Su respuesta a la pregunta