matlab学习笔记(九)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

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) 并求两者误差,分析两种情况下的结果。

  1. wm=2 , wc=1.2wm , Ts=1;
  2. 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)');

运行结果:
在这里插入图片描述

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
学习MATLAB时,编写学习笔记是一种很好的方法,可以帮助您记录重要的概念、语法和技巧,以及解决问题的步骤。以下是一些关于编写MATLAB学习笔记的建议: 1. 组织结构:使用清晰的标题和分节来组织您的学习笔记。将不同的主题分成单独的部分,并使用子标题来进一步细分内容。 2. 内容概要:在每个部分或子标题下,写下该主题的概要。这样可以帮助您回顾和理解该主题的关键点。 3. 示例代码和输出:对于每个主题,包括一些示例代码和相应的输出结果。这有助于您理解和演示具体的MATLAB语法和功能。 4. 问题与解答:如果您在学习过程中遇到了一些困惑或问题,将其记录下来,并在笔记中提出并解答这些问题。这样可以帮助您深入思考并加深对该主题的理解。 5. 笔记补充:除了基本概念和语法外,您还可以添加一些额外的笔记,如最佳实践、编程技巧、常见错误等。这些额外的笔记可以提供更多的实用信息和提示。 6. 参考资料:在您的学习笔记中,包括引用的参考资料,如教程、文档、书籍或网站链接。这样,您可以随时回顾并深入研究相关的主题。 7. 总结和复习:在学习笔记的结尾,添加一个总结部分,回顾和总结您学到的重点和关键概念。此外,定期复习您的学习笔记也是加深理解和记忆的好方法。 以上是关于编写MATLAB学习笔记的一些建议。希望这对您有所帮助,并祝您在MATLAB学习过程中取得成功!如果有任何其他问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值