%matlab验证采样定理
%该程序用于画出原信号的图形以及其DFT图形
clear;
t = -0.1:0.001:0.1;%该参数用于画原信号图形
k = 0:200;%时域取样
n = -999:0;%频域取样
f = sin(2*pi*60*t)+cos(2*pi*25*t);%原函数, 由t的取值可得f有201个值
s = exp(-j*2*pi/length(k));
skn = s.^(k‘*n);%代公式
F = f*skn;%对原函数进行傅里叶变换,
%此处f是1*201的矩阵,则skn必须满足201*X的矩阵
%得到的f是1*X的矩阵
subplot(2,1,1)
plot(t, f);%画出采原函数序列图
title(‘原信号‘);
xlabel(‘时间t(s)‘);
j = 1:length(F);
subplot(2,1,2)
plot(j,abs(F),‘r‘)%画出序列的DFT图
title(‘原信号的DFT图‘);
3.2: Signal_2.m
%该函数用于画出离散的采样波形图和由采样信号重建的信号图
%绘制离散的采样波形图
function Signal_Rebuilt(frequency)
%需要输入采样频率frequency
T= 1/frequency;%抽样周期
gs = -0.1:T:0.1;
fg = sin(2*pi*60*gs)+cos(2*pi*25*gs);
subplot(2,1,1)
stem(gs, fg)
title(‘采样信号‘);
xlabel(‘时间t(s)‘);
%绘制由采样信号重建的信号图
y = -0.1:0.001:0.1;
ln = -0.1/T:0.1/T;
M=ones(length(ln),1)*y-ln‘*T*ones(1,length(y));
fs = fg*sinc(frequency*M);
subplot(2,1,2)
plot(y,fs,‘r‘)
title(‘重建信号‘);
xlabel(‘时间t(s)‘);
%绘制由采样信号重建的信号的DFT图
k = 0:200;
n = -999:0;
s = exp(-j*2*pi/length(k));
skn = s.^(k‘*n);
F = fs*skn;
figure(3)
g = 1:length(F);
plot(g, abs(F))
原文地址:http://blog.csdn.net/u013467442/article/details/40922175