how to make fft of rectangular function?

12 次查看(过去 30 天)
Ts = 0.01; N=2000; t=-20:Ts:(N-1)*Ts; T = 1; fs=1/Ts; f=0:fs/N:(N-1)/N*fs; x1 = rectpuls(t, T); xk=fft(x1); figure(1); plot(t,x1); figure(2); plot(0:N-1, xk); figure(3); plot(f, 1/N*abs(xk));
figure1,2 are not found. what is the problem? how can i fix it?

回答(2 个)

Star Strider
Star Strider 2017-12-2
Small error in figure(3). You do not need figure(2).
This works:
Ts = 0.01; N=2000; t=-20:Ts:(N-1)*Ts;
T = 1;
fs=1/Ts;
f=0:fs/N:(N-1)/N*fs;
x1 = rectpuls(t, T);
xk=fft(x1);
figure(1); plot(t,x1)2
figure(3); plot(f, 1/N*abs(xk(1:length(f))));
  4 个评论
Parth Patel
Parth Patel 2020-4-16
编辑:Parth Patel 2020-4-16
In this program , i asume, f = frequency.
can the value of frequency be zero?
f=0:fs/N:(N-1)/N*fs;
thanks in adavnce
Star Strider
Star Strider 2020-4-16
Yes.
A zero frequency signal is d-c, usually present as a constant offset in a signal that is otherwise varying. The d-c component is the mean of the signal.

请先登录,再进行评论。


Tilkesh
Tilkesh 2022-3-28
function y = rect(x, D)
% function y = rect(x, D)
if nargin == 1, D = 1;
x = abs(x);
y = double(x<D/2);
y(x == D/2) = 0.5;
end

类别

Help CenterFile Exchange 中查找有关 Discrete Fourier and Cosine Transforms 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!