how to plot this function

4 个评论

Do you have any attempts?
Yes sir. But it didnot give me the right shape:
(n<-2 & n>2)
is never true. However, since you are multiplying that by 0, if it somehow did match it would contribute 0 anyhow. You can just leave out that term.
Your x axis is wrong. You are effectively using your n as your frequency, including negative n. If you are going to plot negative frequencies then you need to fftshift() . And use more points.
Read the first example of fft() to see how to properly plot.

请先登录,再进行评论。

回答(2 个)

n = -5:1:5;
x=1*(n>=-2 & n<=2)+0*(n<-2 & n>2);
L = length(n); Fs = 1;
Nblock = 128; % Block size
Y = fft(x, Nblock)/L;
f = Fs/2*linspace(0,5, Nblock/2+1);
plot(f, 2*abs(Y(1:Nblock/2+1)))
xlabel('frequency, [Hz]'), ylabel('Amplitude')
title('Single-sided Spectrum'), shg

3 个评论

x=1*(n>=-2 & n<=2)+0*(n<-2 & n>2); % what is the necessity to multiply it by zero ??
% Hint: Not necessary
so many tnx for ur answering. but why the shapes didnot match together? compare.jpg
hi.
i could find this code that the result and shape is near to my shape.
clc
clear
t=linspace(-5,5,100);
y=heaviside(t+0.5)-heaviside(t-0.5);
z=fft(y);
z=abs(z);
stem(z)
near.jpg

请先登录,再进行评论。

Hi,
Here is the full spectrum calculation:
n = -5:1:5;
x=1*(n>=-2 & n<=2);
L = length(n); Fs = 1;
Nblock = 128; % Block size
Y = fft(x, Nblock)/L;
f = Fs/2*linspace(0,5, Nblock);
plot(f, 2*abs(Y(1:Nblock)))
xlabel('frequency, [Hz]'), ylabel('Amplitude')
title('Single-sided Spectrum'), shg
Good luck.

4 个评论

tnx. this is so near also to final shape but my result is:
question2.jpg
can u explain more mr Walter Roberson.
t = linspace(0,10);
ft = fft(t);
subplot(1,2,1); plot(abs(ft)); %what you are doing now
subplot(1,2,2); plot(abs(fftshift(ft))); %what you need to do in order to get the 0 in the center

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Graphics Performance 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by