至于f的算法是不一样的,在f
=((0:halfLength)+1)*Fs1/n这里,0:halfLength)+1是数值,不是索引,结果是一个矢量。
clcclear all
%输入f、N、T、是否补零(补几个零)
f=input('Input frequency of the signal: f\n')
N=input('Input number of pointsl: N\n')
T=input('Input sampling time: T\n')
flag=input('Add zero too sampling signal or not? yes=1 no=0\n')
if(flag)
ZeroNum=input('Input nmber of zeros\n')
else
ZeroNum=0
end
%生成信号,signal是原信号。signal为采样信号。
fs=1/T
t=0:0.00001:T*(N+ZeroNum-1)
signal=sin(2*pi*f*t)
t2=0:T:T*(N+ZeroNum-1)
signal2=sin(2*pi*f*t2)
if (flag)
signal2=[signal2 zeros(1, ZeroNum)]
end
%画出原信号及采样信号。
figure
subplot(2,1,1)
plot(t,signal)
xlabel('Time(s)')
ylabel('Amplitude(volt)')
title('Singnal')
hold on
subplot(2,1,1)
stem(t2,signal2,'r')
axis([0 T*(N+ZeroNum) -1 1])
%作FFT变换,计算其幅值,归一化处理,并画出频谱。
Y = fft(signal2,N)
Pyy = Y.* conj(Y)
Pyy=(Pyy/sum(Pyy))*2
f=0:fs/(N-1):fs/24
subplot(2,1,2)
bar(f,Pyy(1:N/2))
xlabel('Frequency(Hz)')
ylabel('Amplitude')
title('Frequency compnents of signal')
axis([0 fs/2 0 ceil(max(Pyy))])
grid on
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)