close all %关闭所有的窗口
clear all %清除所有的变量
%要求输入k,从而计算总取样点数N=2^k
k=input('取样点数=2^k,k=[14] ');
if isempty(k),
k=14;
end;
N=2^k;
%初始化时域分辨率dt(单位ms),
%频域分辨率df(单位kHz)
%并满足df*dt=1/N
dt=0.01;
df=1.0/(N*dt);
%计算时间宽度T(单位ms)
%系统带宽Bs(单位kHz)
T=N*dt;
Bs=N*df/2;
%产生时间取样点距阵t
%和频域取样点距阵f
t=[-T/2+dt/2:dt:T/2];
f=[-Bs+df/2:df:Bs];
%设置sin函数的基频f0(单位kHz)
f0=1;
%产生sin函数抽样距阵s
s=sin(2/3*pi*f0*t);
%做傅立叶变换,产生频域抽样距阵S
S=t2f(s,dt);
%计算出功率谱距阵P
P=S.*conj(S)/T;
%画时域图
figure(1) %开窗口1
%设置窗口位置和大小
set(1,'position',[10,50,300,200])
plot(t,s,'r');
grid on %显示网格
%设置坐标范围
axis([-2^10*dt/2,2^10*dt/2,min(s),max(s)])
xlabel('t(ms)') %给X轴加标签
ylabel('s(t)') %给Y轴加标签
%画频谱曲线
figure(2)
set(2,'position',[350,50,300,200])
plot(f,abs(S),'g')
grid on
axis([-2*f0,2*f0,min(abs(S)),max(abs(S))])
xlabel('f(kHz)')
ylabel('S(f)')
%画功率谱曲线
figure(3)
set(3,'position',[750,50,300,200])
plot(f,P,'b')
grid
axis([-2*f0,2*f0,min(P),max(P)])
xlabel('f(kHz)')
ylabel('P(f)')
评论0