how to make fft of rectangular function?

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일

3 개 추천

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

YEON HWEE BAE
YEON HWEE BAE 2017년 12월 3일
thank you so much ^^
Star Strider
Star Strider 2017년 12월 3일
My pleasure.
If my Answer helped you solve your problem, please Accept it!
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일

0 개 추천

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

카테고리

도움말 센터File Exchange에서 푸리에 분석과 필터링에 대해 자세히 알아보기

태그

질문:

2017년 12월 2일

답변:

2022년 3월 28일

Community Treasure Hunt

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

Start Hunting!