《数字信号处理》学习01-离散时间信号与序列的卷积和运算

本文主要是介绍《数字信号处理》学习01-离散时间信号与序列的卷积和运算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一,信号

二,序列的运算 

1,卷积和 

2,matlab实现 


相关的电子书籍请到这篇文章所在的专栏,并通过夸克网盘链接下载。

很多简单的知识点我就不再赘述了,接下来就着重记录我学习过程中遇到的较难理解且容易忘记的知识点,如果想要再详细些的,可以在评论区留言。

这篇文章主要是用于整理我在看书过程中自己做的一些记忆方法(个人记忆方法,因人而异,仅供参考)

一,信号

1,信号是信息的载体,也是信息的物理表现形式。例如,古时的烽火就是一个信号,一看到烽火这个信号,士兵知道有敌人来犯的信息,就可以立马采取行动,保护自己的国家。

2,什么是离散时间信号?离散时间信号就是该信号在时间变化范围是不连续的,离散的。

例如下图 :

可以看到,离散时间信号中对应的序号(时刻)的序号值都是独立的,没有与其它的序号值连一起,它们就组成了序列。为了方便,后面都用序列来表示离散时间信号。

与离散时间信号相对的就是连续时间信号,如下图:

二,序列的运算 


3,序列的六个基本运算:时间尺度变换,翻褶,移位,和,积,卷积和。

为了能够记住这六个运算的名字,我将每个运算前面的第一个字取出来,组成以下的口诀:时翻移,和积卷。

【时常翻转移动,和鸡圈】

前三个运算只有一个序列进行运算,后面三个运算需要有两个序列一起参与运算。因为前五个比较简单(用数学的基本运算就可以做出来),所以在这里就不赘述它们的运算(如果有需要的请在评论区留言,我后面再补上去)。

【需要注意】:

当离散时间变量n前面有系数k: x(kn) ,在移位之前,需要把k提到n和N的前面,才能够得到正确的表达式: x(k(n+N))

例如,有一个周期性序列x(3n),现在要将该序列向左移动5位【左加右减,上加下减】,写出移位后的序列表达式:x(3(n+5))=x(3n+15)。

同理可以通过表达式x(3n+15)知道该周期性序列的移动方向和位数:x(3n+15)=x(3(n+5))→序列向左移动5位。

1,卷积和 

接下来一起学习第一个知识点“卷积和”,这三个字中每一个分别代表着对应的运算:

  • 卷:翻褶+移位
  • 积:积运算
  • 和:和运算

概念和公式如下

可以看到,卷字不愧是”卷“,一个字就要代表两种运算。

在具体的运算中,如果两个序列没有用到卷积和,那么这两个序列的形状都不会发生太大变化,但如果两个序列之间是卷积和的运算,那么其中一个序列 x(n) 还是原来的序列,只是变量换成了m(既 x (m) ),另外一个序列 h(m) 就要开始卷了!开始卷的时候,h(m) 翻身(翻褶)有了个家(加上另外一个变量n),变成了 h(n−m) 。

卷积和就是要先卷,再积,最后求和。

卷完之后,将这两个序列乘在一起: x(m)×h(n−m) ,之后再求和。

因为序列x(n)和h(n)的定义域没给,所以这两个序列卷积和之后的结果y(n)的定义域默认为负无穷到正无穷(既n属于[-∞,+∞]),在求和的时候m也需要在 [−∞,+∞] 这个区间内:\sum_{m=−∞}^{ m=+∞}x(m)×h(n−m)=y(n)

如果觉得前面的太长,y(n)的卷积和表达式也可以用 x(n)∗h(n)=y(n) 来表示。

在教材中,卷积和的具体运算如下描述↓

(有需要教材的请在评论区留言或者是私信我,我之后在文章补发个链接)

在列出卷积和公式的时候提到“因为序列x(n)和y(n)的定义域没给,所以它们两个卷积和之后的结果序列y(n)的定义域可以是负无穷到正无穷”。如果序列x(n)和y(n)的定义域给出来,例如:

x(n)的定义域为 [a1,b1] ,y(n)的定义域为 [a2,b2] ,那么这两个序列卷积和之后的结果序列y(n)的定义域就是这两个序列的定义域的起始位置和终止位置对应相加,即:

n∈[a1+a2,b1+b2]

表示:

  • y(n)的第一个非零点在n=a1+a2的位置,最后一个非零点在n=b1+b2的位置。

如果 n<a1+a2 或者是 n>b1+b2 ,那么y(n)的序列值一定是0,不需要再一个一个的去计算并求和。

如果 n∈[a1+a2,b1+b2] ,那么y(n)的序列值可能是0也可能是其他整数Z。

当n的值确定好之后(从a1+a2 一直取到 b1+b2),这个时候不可以直接使用卷积和公式:还需要确定m的取值范围。

从公式 \sum_{m=−∞}^{ m=+∞}x(m)×h(n−m)=y(n)可以看出,m的值与卷王序列h有关(h序列同时包含了n和m两个变量)。

公式里面的序列h(m)一直在变化:翻褶和移位(即 h(n−m) )。

当n取不同的值时,对应的y(n) 求和范围也会跟着h(n−m) 变,具体怎么变?请看下篇文章解说。

咳,防止看到这里的阅读者犯困 ,开个玩笑。

现在继续来一起探究单个y(n)怎么跟着h(n-m)变化:

1,h(n-m) 可以写成 h( -(m-n) )

2,当n=a1+a2时(a1+a2∈[a1+a2,b1+b2]), y(n)=y(a1+a2)

3,h(n-m)=h(-(m-n))=h(−(m−(a1+a2)))

  • 当n>0,既a1+a2>0时,h(-m)序列向右移 a1+a2 位。因为a1+a2>0时,和前面的负号没有抵消,变量m后面加上的数还是负数(既h(-(m-C))),根据“左加右减”,可以知道对应的序列是向右移位;
  • 当n<0,既a1+a2<0时,h(-m)序列向左移 a1+a2 位。因为a1+a2<0时,和前面的负号相互抵消,变量m后面加上的数是个正数(既h(-(m+C))),根据“左加右减”,可以知道对应的序列是向左移位;
  • 当n=0,既a1+a2=0时,h(-(m-0))=h(-m+0)=h(-m),只有翻褶,没有移位。

[有更快速的判断移位方向的方法:

因为m前面是负号,既m<0,所以移位的方向就是n的所在的方向,

  • n>0,n位于x轴的右边,序列h(-m)则向右移位n位变成h(n-m)];
  • n<0时,n位于x轴的左边,序列h(-m)则向左移位n位变成h(n-m)]。

4,确定m的取值范围:

之前有提到m的取值范围与卷王序列h(m)有关

  • 当序列h(m)经过翻褶,变成h(-m)之后向右移动a1+a2位时,本来h(m)的定义域(既m的取值范围)为[a2,b2],序列向右移动后m的取值范围也会跟着变,因为越往右边,数值越来越大,所以此时h(n-m)中的m∈[a2+(a1+a2),b2+(a1+a2)],这个时候就可以使用卷积和公式: \sum_{m=a1+(a1+a2)}^{m=b1+(a1+a2)}x(m)×h(a1+a2−m)=y(a1+a2) ;
  • 当序列h(m)经过翻褶,变成h(-m)之后向左移动a1+a2位时,本来h(m)的定义域(既m的取值范围)为[a2,b2],序列向左移动后m的取值范围也会跟着变,因为越往左边,数值越来越小,所以此时h(n-m)中的 m∈[a2-(a1+a2),b2-(a1+a2)],这个时候就可以使用卷积和公式: \sum_{m=b1-(a1+a2)}^{m=a1-(a1+a2)}x(m)×h(a1+a2−m)=y(a1+a2)

通过上述的分析之后,开始上题:

思路:

  1. 列出卷积和公式:\sum_{m=−∞}^{ m=+∞}x(m)×h(n−m)=y(n)
  2. 确定卷积和序列y(n)的定义域,n∈[-3+(-1),3+4]=[-4,7];
  3. y(n)的第一个非零取值是当n=-4时,此时 h(n-m)中的m取值范围[-1+(-4),4+(-4)],既m∈[-5,0],y(n)=y(-4)。 y(-4)=\sum_{m=-5}^{m=0}x(m)×h(-4−m) =x(-5)h(1)+x(-4)h(0)+x(-3)h(-1)+x(-2)h(-2)+x(-1)h(-3)+x(-0)h(-4)=0*0+0*0+3*2+11*0+7*0+0*0=6;
  4. y(n)的第二个非零取值是当n=-3时,此时 h(n-m)中的m取值范围[-1+(-3),4+(-3)],既m∈[-4,1],y(n)=y(-3)。 y(-3)=\sum_{m=-4}^{m=1}x(m)×h(-3−m)=x(-4)h(1)+x(-3)h(0)x(-2)h(-1)+x(-1)h(-2)+x(0)h(-3)=0*0+3*311*2+7*0+0*0=31;
  5. 之后依次求出y(-2)=47,y(-1)=6,y(0)=-51,y(1)=-5,y(2)=41,y(3)=18,y(4)=-22,y(5)=-3,y(6)=8,y(7)=2。
  6. 综上所述,当-4≤n≤7时,y(n)={6,31,47,6,-51,-5,41,18,-22,-3,8,2},当n为其它值时,y(n)=0。

2,matlab实现 

使用matlab软件绘制的卷积和波形图如下

代码:

x=[-3:1:3];
nx=[3,11,7,0,-1,4,2];
h=[-1:1:4];
nh=[2,3,0,-5,2,1];
ny=conv(nx,nh);
s=x(1)+h(1);
w=length(x)+length(h)-2;
y=[s:1:s+w];
stem(y,ny,'.');
xlabel('y');
ylabel('ny');
axis([s (s+w) -60 60]);
grid on;

如果想要了解更多关于卷积的matlab实现,请访问博客:

matlab学习004-使用matlab绘制卷积波形图_matlab卷积-CSDN博客

有问题请在评论区留言或者是私信我,回复时间不超过一天。

这篇关于《数字信号处理》学习01-离散时间信号与序列的卷积和运算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127345

相关文章

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

无线路由器哪个品牌好用信号强? 口碑最好的三个路由器大比拼

《无线路由器哪个品牌好用信号强?口碑最好的三个路由器大比拼》不同品牌在信号覆盖、稳定性和易用性等方面各有特色,如何在众多选择中找到最适合自己的那款无线路由器呢?今天推荐三款路由器让你的网速起飞... 今天我们来聊聊那些让网速飞起来的路由器。在这个信息爆炸的时代,一个好路由器简直就是家庭网编程络的心脏。无论你

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

Go信号处理如何优雅地关闭你的应用

《Go信号处理如何优雅地关闭你的应用》Go中的优雅关闭机制使得在应用程序接收到终止信号时,能够进行平滑的资源清理,通过使用context来管理goroutine的生命周期,结合signal... 目录1. 什么是信号处理?2. 如何优雅地关闭 Go 应用?3. 代码实现3.1 基本的信号捕获和优雅关闭3.2

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用