function sample()
t0=10; %定义时间长度
ts=0.001; fs=1/ts;
t=[-t0/2:ts:t0/2]; %定义时间序列
df=0.5; %定义频率分辨率
x=sin(200*t); m=x./(200*t+eps);
w=t0/(2*ts)+1; %确定t=0的点
m(w)=1; %修正t=0点的信号值
m=m.*m;
[M,mn,dfy]=fft_seq(m,ts,df); %傅立叶变换
M=M/fs;
f=[0:dfy:dfy*length(mn)-dfy]-fs/2; %定义频率序列
figure(1)
subplot(2,1,1); plot(t,m);
xlabel('时间');ylabel('幅值');title('原始信号(fh=200/2piHz)的波形');
axis([-0.15,0.15,0,1.5]);
subplot(2,1,2);
plot(f,abs(fftshift(M)));
xlabel('频率');ylabel('幅值');
axis([-500,500,0,0.03]);title('原始信号的频谱');
t0=10; %信号持续的时间
ts1=0.005; %满足抽样条件的抽样间隔
fs1=1/ts1;
t1=[-t0/2:ts1:t0/2]; %定义满足抽样条件的时间序列
x1=sin(200*t1); m1=x1./(200*t1+eps); w1=t0/(2*ts1)+1;
m1(w1)=1; %修正t=0时的信号值
m1=m1.*m1; %定义信号
[M1,mn1,df1]=fft_seq(m1,ts1,df); %对满抽样条件的信号进行傅立叶变换
M1=M1/fs1;N1=[M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1];
f1=[-7*df1*length(mn1):df1:6*df1*length(mn1)-df1]-fs1/2;
figure(2)
subplot(2,1,1); stem(t1,m1);
xlabel('时间');ylabel('幅值');
title('抽样正常(fs=200Hz)时的信号波形');axis([-0.15,0.15,0,1]);
subplot(2,1,2)
plot(f1,abs(fftshift(N1)));
xlabel('频率');ylabel('幅值');axis([-500,500,0,0.05]);
title('抽样正常时的信号频谱');axis([-500,500,-0.01,0.03]);
t0=10; %信号持续的时间
ts2=0.01; %不满足抽样条件的抽样间隔
fs2=1/ts2;
t2=[-t0/2:ts2:t0/2]; %定义不满足抽样条件的时间序列
x2=sin(200*t2); m2=x2./(200*t2+eps); w2=t0/(2*ts2)+1;
m2(w2)=1; %修正t=0时的信号值
m2=m2.*m2; %定义信号
[M2,mn2,df2]=fft_seq(m2,ts2,df);%对不满足抽样条件的信号进行傅立叶变换
M2=M2/fs2;N2=[M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2];
f2=[-7*df2*length(mn2):df2:6*df2*length(mn2)-df2]-fs2/2;
figure(3)
subplot(2,1,1); stem(t2,m2);
xlabel('时间');ylabel('幅值');title('抽样失真(fs=100Hz)时的信号波形');
axis([-0.15,0.15,0,1]);subplot(2,1,2)
plot(f2,abs(fftshift(N2)));
xlabel('频率');ylabel('幅值');axis([-500,500,0,0.02]);
title('抽样失真时的信号频谱');axis([-500,500,0.005,0.02]);
function [M,m,df]=fft_seq(m,ts,df)
fs=1/ts;
if nargin==2 n1=0
else n1=fs/df
end
n2=length(m);n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n