我最近在Matlab中一直在研究DFT,這裏是我在Matlab中的代碼。哪部分代碼有問題,我的採樣是錯誤的?如果你回答我的問題,我會感激:步進函數的時域DFT
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」? 如果你給我關於這段代碼的建議,我將非常感激。
請問在正確的論壇(Stack Exchange Math我猜?)一般的FT問題,在這裏,我們只應該看看編程和框架問題。儘管如此,請參閱下面的簡短答案。 – rst