matlab在信号实验中的运用一:常用信号的生成与采样

说在前面

我们都知道Matlab是一个进行矩阵运算的数学工具,其包含多种数学函数方便我们进行多种运算。本文旨在将matlab用于信号与信号系统的模拟,本人学历尚浅请多多指教。

Matlab模拟信号

在Matlab中变量均为矩阵,因此无法表达时域连续信号。我们首先对信号进行采样。如下例子:

fs=10;                     %采样频率
n=0:1/fs:10;              %对时域采样
y=sin(2*pi*n);                 %建立sin信号
stem(n,y,'filled');       %画出点图

在这里插入图片描述
如果需要建立连续的图形,应使用plot()函数,该函数会自动连接采样点使图形整体更加连贯。

fs=10;                     %采样频率
n=0:1/fs:10;              %对时域采样
y=sin(2*pi*n);                 %建立sin信号
plot(n,y);                %画出连续图

这个过程对一个频率为1的正弦函数进行频率为10Hz的时域采样。采样间隔为1/fs=0.1s。采样后,离散的数据被保存为行为1的矩阵,在matlab里我们通过这样的矩阵运算可以仿真信号的变化。
在这里插入图片描述
可以看到n与y均为101点矩阵。
n=0:0.1:10这样定义n与n=0:100这样虽然效果均为定义101点,但第一种更为符合信号的规范,第一种定义中,n的值对应信号的时域范围,0.1具有采样周期的意义,而第二种没有意义。

信号采样的注意点

我们可以想象,如果fs很大很大,那么在时域来看采样后的结果将会十分接近于原来的连续信号,但是往往实际上这样密集的采样是难以实用且有代价的;务必注意的是fs不能过小,根据采样定理fs应该最小应大于原信号最高频率的2倍,例如上例sin的频率是1故fs应大于2。如果采样频率fs为1.2如下所示:
在这里插入图片描述
这样做是无法表现原信号的,其原因是频率的混迭,这一点以后将专门讲解。(或参考采样定理)

常用信号介绍

heaviside 单位阶跃函数
sin 正弦函数
cos 余弦函数
sinc函数
exp 指数函数
rectpuls 门函数
tripuls 三角脉冲函数
square 周期方波
sawtooth 周期锯齿波或三角波

简单的例程

1、x(t)=exp(-t)sin(2Πt)[u(t)-u(t-3)]

fs=10;                     %采样频率
n=0:1/fs:10;              %对时域采样
y1=exp(-n);               %指数信号
y2=sin(2*pi*n);           %正弦信号
y3=heaviside(n)-heaviside(n-3); %阶跃信号
y=y1.*y2.*y3;            %点乘
stem(n,y,'filled');       %画出点图

在这里插入图片描述在这里插入图片描述可以看到阶跃函数做差后的结果是0-3上为1其余为0;正弦函数乘e的负指数后按照正弦的频率,做指数衰减。
值得注意的是使用函数heaviside形成的阶跃响应,在0与1交界点处值为0.5,这是符合离散阶跃函数定义的,但连续的阶跃函数交界处应为1。
在这里插入图片描述小结
本节介绍了一些基本信号仿真的方法,对于刚刚接触信号仿真的学生来说,编程规范十分重要,每个变量都有其实际的意义,切忌应付了事。以后有机会我尽可能分享更多这方面的经验。

  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值