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?

Réponses (2)

Star Strider
Star Strider le 2 Déc 2017
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 commentaires

YEON HWEE BAE
YEON HWEE BAE le 3 Déc 2017
thank you so much ^^
Star Strider
Star Strider le 3 Déc 2017
My pleasure.
If my Answer helped you solve your problem, please Accept it!
Parth Patel
Parth Patel le 16 Avr 2020
Modifié(e) : Parth Patel le 16 Avr 2020
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 le 16 Avr 2020
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.

Connectez-vous pour commenter.

Tilkesh
Tilkesh le 28 Mar 2022

0 votes

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

Catégories

En savoir plus sur 푸리에 분석과 필터링 dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!