提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
matlab学习笔记(九)
- 一、信号采样
- 二、信号重建
一、信号采样
信号的采样原理图如下图所示:
其数学模型表示为:
其中的f(t)为原始信号,采样信号在时域的表示为无穷多冲激函数的线性组合,其权值为原始信号在对应采样时刻的定义值。
令原始信号f(t)的傅立叶变换为F(jw)=FT(f(t)),则采样信号 的傅立叶变换
由此可见,采样信号 的频谱就是将原始信号f(t)的频谱在频率轴上以采样角频率 为周期进行周期延拓后的结果。
二、信号重建
经采样后得到信号fs(t) 经理想低通h(t) 则可得到重建信号f(t) ,即:
案例一:
wm=1; %信号带宽
wc=wm; %滤波器截止频率
Ts=pi/wm; %采样间隔
ws=2*pi/Ts; %采样角频率
n=-100:100; %时域采样电数
nTs=n*Ts %时域采样点
f=sinc(nTs/pi);
Dt=0.005;t=-15:Dt:15;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); %信号重构
t1=-15:0.5:15;
f1=sinc(t1/pi);
subplot(211);
stem(t1,f1);
xlabel('kTs');
ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)的临界采样信号');
subplot(212);
plot(t,fa)
xlabel('t');
ylabel('fa(t)');
title('由sa(t)=sinc(t/pi)的临界采样信号重构sa(t)');
grid;
运行结果:
案例二:
Sa(t)的过采样及信号重构和绝对误差分析;
程序和例上类似,将采样间隔改成Ts=0.7pi/wm , 滤波器截止频率该成wc=1.1wm ,添加一个误差函数
wm=1;
wc=1.1*wm;
Ts=0.7*pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-15:Dt:15;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
error=abs(fa-sinc(t/pi)); %重构信号与原信号误差
t1=-15:0.5:15;
f1=sinc(t1/pi);
subplot(311);
stem(t1,f1);
xlabel('kTs');
ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)的采样信号');
subplot(312);
plot(t,fa)
xlabel('t');
ylabel('fa(t)');
title('由sa(t)=sinc(t/pi)的过采样信号重构sa(t)');
grid;
subplot(313);
plot(t,error);
xlabel('t');
ylabel('error(t)');
title('过采样信号与原信号的误差error(t)');
运行结果:
案例三:
将采样间隔改成Ts=1.5*pi/wm , 滤波器截止频率该成wc=wm=1
wm=1;
wc=1*wm;
Ts=1.5*pi/wm;
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-15:Dt:15;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
error=abs(fa-sinc(t/pi)); %重构信号与原信号误差
t1=-15:0.5:15;
f1=sinc(t1/pi);
subplot(311);
stem(t1,f1);
xlabel('kTs');
ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)的采样信号');
subplot(312);
plot(t,fa)
xlabel('t');
ylabel('fa(t)');
title('由sa(t)=sinc(t/pi)的过采样信号重构sa(t)');
grid;
subplot(313);
plot(t,error);
xlabel('t');
ylabel('error(t)');
title('过采样信号与原信号的误差error(t)');
运行结果:
案例四:
设f(t)=0.5*(1+cost)*(u(t+pi)-u(t-pi))
,由于不是严格的频带有限信号,但其频谱大部分集中在[0,2]之间,带宽wm可根据一定的精度要求做一些近似。试根据以下两种情况用 MATLAB实现由f(t)的抽样信号fs(t)重建f(t) 并求两者误差,分析两种情况下的结果。
- wm=2 , wc=1.2wm , Ts=1;
- wm=2 , wc=2 wm, Ts=2.5
A1:
wm=2; %信号带宽
wc=2.4; %滤波器截止频率
Ts=2/wm; %采样间隔
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts;
f=0.5*(1+cos(nTs)).*(stepfun(nTs,pi)-stepfun(nTs,-pi));
Dt=0.005;t=-5:Dt:5;
fa=f*Ts*wc/pi*(0.5*(1+cos(wc)).*(stepfun(wc,pi)-stepfun(wc,-pi)))*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)));
error=abs(fa-0.5*(1+cos(t)).*(stepfun(t,pi)-stepfun(t,-pi))); %重构信号与原信号误差
t1=-10:0.5:10;
f1=0.5*(1+cos(t1)).*(stepfun(t1,pi)-stepfun(t1,-pi));
subplot(311);
stem(t1,f1);
xlabel('kTs');
ylabel('f(kTs)');
title('f(t)的采样信号');
subplot(312);
plot(t,fa)
xlabel('t');
ylabel('fa(t)');
title('由f(t)的过采样信号重构fs(t)');
grid;
subplot(313);
plot(t,error);
xlabel('t');
ylabel('error(t)');
title('过采样信号与原信号的误差error(t)');
运行结果:
A2:
wm=2; %信号带宽
wc=2; %滤波器截止频率
Ts=2.5; %采样间隔
ws=2*pi/Ts;
n=-100:100;
nTs=n*Ts;
f=0.5*(1+cos(nTs)).*(stepfun(nTs,pi)-stepfun(nTs,-pi));
Dt=0.005;t=-5:Dt:5;
fa=f*Ts*wc/pi*(0.5*(1+cos(wc)).*(stepfun(wc,pi)-stepfun(wc,-pi)))*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)));
error=abs(fa-0.5*(1+cos(t)).*(stepfun(t,pi)-stepfun(t,-pi))); %重构信号与原信号误差
t1=-10:0.5:10;
f1=0.5*(1+cos(t1)).*(stepfun(t1,pi)-stepfun(t1,-pi));
subplot(311);
stem(t1,f1);
xlabel('kTs');
ylabel('f(kTs)');
title('f(t)的采样信号');
subplot(312);
plot(t,fa)
xlabel('t');
ylabel('fa(t)');
title('由f(t)的过采样信号重构fs(t)');
grid;
subplot(313);
plot(t,error);
xlabel('t');
ylabel('error(t)');
title('过采样信号与原信号的误差error(t)');
运行结果: