信号的采样与重构
2017-05-14 17:25阅读:
采样定理
模拟信号经过 (A/D)
变换转换为数字信号的过程称为采样,信号采样后其频谱产生了周期延拓,每隔一个采样频率
fs,重复出现一次。为保证采样后信号的频谱形状不失真,采样频率必须大于信号中最高频率成分的两倍,这称之为采样定理
利用MATLAB分析采样和截频对信号重构的影响
(1)采样对信号重构的影响
源程序为:
%实验信号f(t)=sin(t)/t,最高截频为1
%#####
%Step1:原始信号
%#####
lf=15*pi;
%信号长度
t=-lf:0.01:lf; %观察区间
f=sin(t)./t;
%原信号
figure
axis([-50 50 -0.5 1.5]);
plot(t,f,'LineW
idth',5);
xlabel('t');
ylabel('f(t)');
title('原信号(f(t)=sin(t)/t)');
grid;
%#####
%Step2:采样信号
%#####
wm=1;
%最高截频
rs=input('过采样,0.5,临界采样,1,欠采样,1.5:rs=');
Ts=rs*pi./wm;
%采样周期
ws=2*pi./Ts;
%采样角频率
ns=lf/Ts;
%采样信号长度
n=-ns:ns;
%采样点数
nTS=n*Ts;
%采样时刻
fs=sinc(nTs/pi);
%采样信号
hold on;
stem(nTs,fs,'r');
xlabel('kTs');
ylabel('f(kTs)');
if rs<1
title('过采样信号');
elseif rs<1.5
title('临界采样信号');
else
title('欠采样信号');
end;
%#####
%Step3:重构信号
%#####
fsr=fs*sinc((1/Ts)*(ones(length(nTs),1)*t-nTs*ones(1,length(t))));%重构信息
�=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs*ones(1,length(t))));
hold on;
plot(t,fsr,'g','LineWidth',1)
xlabel('t');
ylabel('fsr(t)');
if rs<1
title('过采样重构信号');
elseif rs<1.5
title('临界采样重构信号');
else
title('欠采样重构信号');
end;
程序运行结果为:
(2)截频对信号重构的影响
源程序为:
%实验信号f(t)=1(-1<=x<=1),频谱为F(w)=2sinw/w
%#####
%Step1:原始信号
%#####
lf=1.5;
%信号长度参数
t=-lf:0.01:lf;
%观察观察区间
f=zeros(1,length(t));
%原信号
f(logical(abs(t)<=1))=1;
figure('name','时域信号f(t)=1(-1<=x<=1)')
axis([-1.5 1.5 -0.5 1.5]);
plot(t,f,'LineWidth',3);
xlabel('t');
ylabel('f(t)');
grid on
%#####
%Step2:信号的频谱
%#####
IF=10;
%频带宽度参数
w=-IF:0.01:IF;
%频谱观察区间
F=2*sin(w)./w;
%频谱
figure('name','频谱F(w)=2sinw/w');
axis([-15 15 -2 2]);
plot(w,F,'LineWidth',3);
xlabel('w');
ylabel('F(w)');
grid on
%#####
%Step3:采样信号
%#####
wm=input('请选择截频(pi/0.5 or
pi/0.3,etc):wm=');
%最高截频
Ts=pi./wm;
%采样周期
ws=2*pi./ts;
%采样角频率
ns=If/Ts;
%采样信号长度参数
n=-ns:ns;
%采样点数
nTs=n*Ts;
%采样时刻
fs=zeros(1,length(nTs));
%采样信号
fs(logical(abs(nTs)<=1))=1;
figure('name','采样信号');
stem(nTs,fs,Ts);
xlabel('kTs');
ylabel('f(kTs)');
grid on;
%#####
%Step4:重构信号
%#####
fsr=fs*sinc((1/Ts)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));%重构信息
figure('name','重构信号');
plot(t,fsr,'r','LineWidth',1)
xlabel('t');
ylabel('fsr(t)');
grid on;
程序运行结果为:
