[数字信号处理]时域中的离散时间信号和系统

news2025/1/18 19:08:14

离散时间信号最基本的形式是定义在等间隔的时间离散值上,且在这些离散时间上的信号振幅值是连续的。离散时间系统则是输入为离散时间信号输出也是离散时间信号的系统。对于线性时不变(LTI)系统来说,我们可以发现LTI系统与该系统的冲激响应序列是完全等价的。因此在线性时不变条件下(大多数实际系统都能近似为LTI的),离散时间信号与离散时间系统实际是一致的,他们最后都是落脚于研究序列的时域和频域性质。

那么,本章我们将首先介绍离散时间信号和系统在时域中的表示方法和基本性质。同时,我们仅仅考虑LTI离散时间系统,例如后续章节中介绍的数字滤波器包括有限长和无限长冲激响应数字滤波器,所以离散时间信号和系统可以无差别对待。也就是说,序列(系统)的某些性质,同样适用于系统(序列),例如能量信号对应于稳定系统条件、信号的频率分析对应于系统的频谱响应。

离散时间信号

一般来说,离散时间信号可以通过对连续时间信号抽样来得到

x[n]=xa(nTs)

其中,表示抽样间隔

实际生活中存在很多离散时间信号的例子,比如天气预报的结果,气温值在一天中每隔一个小时一次的预报就是一个典型的离散时间信号的例子。

当然,我们也可以通过软件仿真出离散时间信号,例如在Matlab中执行

xn = randn(10,1);

就能产生一个随机离散时间信号,长度为10.

上一章节中,我们也提到过,离散时间信号实际上包含两种形式:一种是抽样数据信号,其样本值是连续的;另一种是数字信号,其样本值是离散的.实际的数字信号处理系统所处理的信号都会采用舍入或者截断对样本值量化得到数字信号.对连续信号进行数字处理时,连续时间信号先后通过抽样保持电路和模数转换器得到其等效数字信号.期间对振幅的量化误差的影响,后续会接着介绍

1.1 离散时间信号的时域表示

在信号处理中,信号可以用数字序列来表示,该序列成为样本.

离散时间信号x[n]就表示序列x[n]在时刻n的振幅,而带有下划线(或者箭头标示)的样本点默认为n=0时刻的样本点x[0]。以此类推,这样我们就能定义x[1],x[−1],x[2]…等等。

除了通过数字序列来表示以外,离散时间信号还可以表示为一个矢量的形式,例如:

(后面那个T是T次方.N也是如此)

就定义了一个长度为N的离散时间信号,RN表示一个N维的实数域欧氏空间。
当然,对于长度无线的离散时间信号,我们也可以通过矢量来表示,只不过此时信号x不再属于欧氏空间.为了研究这一类问题,则有必要引入希伯特空间的概念

定义单位抽样序列为δ[n],

它表示的物理含义很明确,就是一个抽样器,表示当n=0时刻抽出一个样本值.那么同理,δ[n-1]就表示当n=1时刻抽出一个样本值,那么对于任意一个序列x[n],我们都可以通过这个单位抽样序列来表示

这个公式可以通过下面的这幅图来理解:

上面介绍是三种比较通用的离散时间信号的表示方法,同样对于某些具有显式表达式的离散时间信号,我们可以直接用它们的表达式来表示,例如

1.2 基本序列

下面将介绍几种基本序列:单位抽样序列、单位阶跃序列、指数衰减序列、窗序列和正弦序列

单位抽样序列

定义单位抽样序列为δ[n],

通过如下Matlab代码可以生成一个单位抽样序列。

% Generation of a Unit Sample Sequence 
clf;
% Generate a vector from -10 to 20
n = -10:20;
% Generate the unit sample sequence
u = [zeros(1,10) 1 zeros(1,20)];
% Plot the unit sample sequence
stem(n,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([-10 20 0 1.2]);

单位阶跃序列

定义单位抽样序列为μ[n],

单位样本序列和单位阶跃序列之间的关系如下:

上述第一个公式中的第二个等号成立的原因是:

阶跃序列通常被用来将非因果序列转换成因果序列。

因果指数衰减序列

指数衰减序列可以用来描述很多实际的物理现象,例如热方程的解、RC电路的放电过程等等。

当衰减参数αα为复数,且幅度小于1时,信号x[n]x[n]不仅幅度会衰减,还会出现周期震荡现象

指数信号

% Generation of a complex exponential sequence
clf;
c = -(1/12)+(pi/6)*i;
K = 2;
n = 0:40;
x = K*exp(c*n);
subplot(2,1,1);
stem(n,real(x));
xlabel('Time index n');ylabel('Amplitude');
title('Real part');
subplot(2,1,2);
stem(n,imag(x));
xlabel('Time index n');ylabel('Amplitude');
title('Imaginary part');

% Generation of a real exponential sequence
clf;
n = 0:35; a = 1.2; K = 0.2;
x = K*a.^n;
stem(n,x);
xlabel('Time index n');ylabel('Amplitude');

窗序列

窗序列可以将一个无限长序列h[n]转换成有限长序列

那么最终得到的序列x[n]长度就等于N2−N1+1

正弦序列

其中,ω为离散时间信号的归一化角频率,单位是弧度每样本,ϕ是相位,A是幅度值。

前面我们已经介绍了离散时间信号通常是通过对连续时间信号xa(t)均匀采样得到的,这两个信号之间的关系为

其中,Ts为采样周期。而且,连续时间信号的时间变量t与离散时间信号的时间变量n只在离散时刻tn相关联,且关系为

其中Fs=1/Ts为抽样频率,而Ωs=2πFs表示抽样角频率。

若连续时间信号为

则响应的离散时间信号就是本节开头定义的正弦序列x[n]。很容易,我们可以得到如下关系

而ω为离散时间信号的归一化角频率,单位是弧度每样本。

连续时间信号的角频率Ω0的单位是弧度每秒。

该序列肯定不是周期序列。

我们可以很容易证明,只有当正弦序列的归一化角频率ω满足如下条件时,该序列才是周期的

我们可以很容易证明下列连续时间正弦信号族

通过频率为Ωs抽样之后,能产生相同的抽样信号

同样的,我们也可以证明当ω2=ω1+2πk时,下面两个序列是相等的

复正弦序列

定义正弦序列为

根据欧拉公式,

那么

因此,我们可以将任意复数写成

,其中|A|表示复数A的幅度,
ϕ表示相位。而α记作

最后,可以得到该复正弦序列的实部为衰减的余弦序列,

虚部也是衰减的正弦序列

离散时间信号的分类

根据序列的长度,可以将序列分为有限长序列无限长序列。对于无限长序列,还可以分为左边序列和右边序列。


根据序列的周期性,可以将序列分为周期序列非周期序列。周期序列满足

且称满足上述公式的最小正整数NN为该序列的周期。

针对实数序列,根据序列的对称性,可以将序列分为奇对称序列偶对称序列

同时,对于任意实数序列x[n],我们都可以将该序列通过如下方式分解成奇对称部分

和偶对称部分

很容易可以验证:

1.4 离散时间信号的基本运算

# 循环平移函数
x = np.linspace(0.1, 2 * np.pi, 41)
y1 = np.sin(x)
y2 = np.cos(2*x)
def cshift(key,array):
    return np.append(array[-key:],array[:-key])

# 线性平移

def lshift(key,array):
    if key<0:
        return np.append(array[-key:],np.zeros([-key]))
    else:
        return np.append(np.zeros([key]),array[:-key])

ylr = np.flipud(y1)     # flip left and right
yls = lshift(-10,y1)    # left shift
yrs = lshift(10,y1)     # right shift

plt.subplot(221)
plt.title('Original')
plt.stem(x, y1)
plt.subplot(222)
plt.title('Reversal')
plt.stem(x, ylr)
plt.subplot(223)
plt.title('Linear Shift -10')
plt.stem(x, yls)
plt.subplot(224)
plt.title('Linear Shift 10')
plt.stem(x, yrs)
plt.show()

例:信号平滑

# 通过滑动平均平滑信号
R = 51
d = .8*np.random.normal(0,1,[R,])
n = np.arange(0,R,1)

s = 2*n*(0.9**n)
x = s+d

x1 = np.concatenate((np.zeros([2,]),x),axis=0)
x2 = np.concatenate((np.zeros([1,]),x,np.zeros([1,])),axis=0)
x3 = np.concatenate((x,np.zeros([2,])),axis=0)
# Average
y1 = (x1+x2+x3)/3
y = y1[1:-1]

# 绘制结果
fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(211)
ax.plot(n,d,'r-',label='d[n]')
ax.plot(n,s,'g--',label='s[n]')
ax.plot(n,x,'b-',label='x[n]')
ax.axis([0,50,-2,9])
plt.legend(loc='upper right')
plt.ylabel('Amplitude')

ax = fig.add_subplot(212)
ax.plot(n,y,'r-',label='y[n]')
ax.plot(n,s,'g--',label='s[n]')
ax.axis([0,50,-2,9])
plt.legend(loc='upper right')
plt.xlabel('Time index (n)')
plt.ylabel('Amplitude')

plt.show()

1.5 离散时间信号的卷积和相关

卷积

那么,可以根据定义编写如下卷积计算的Matlab函数。

function conv_dsp(x,y)
lx = length(x);
ly = length(y);
M = lx+ly-1;

x = [flipud(x(:));zeros(M,1)]; % 翻转
y = [y(:);zeros(lx-1,1)];

z = zeros(M,1);

for i = 1:M
    xshift = wshift('1d',x,-i); % 移位
    z(i) = sum(y.*xshift(lx+1:end)); %相乘求和
end
end
x = [1,0,2,1,0,0,1]
y = [2,0,1]
z1 = conv_dsp(x,y)
z2 = conv_dsp(y,x)


x =

     1     0     2     1     0     0     1


y =

     2     0     1


z1 =

     2
     0
     5
     2
     2
     1
     2
     0
     1


z2 =

     2
     0
     5
     2
     2
     1
     2
     0
     1

例如序列x[n]={1,0,2,1,0,0,1}和序列y[n]={2,0,1}的卷积和按照表格法计算如下:

经过求和之后,得到最后的卷积结果为

卷积的性质

卷积的物理意义

  1. 信号合成的角度(与Dirac序列卷积)
  2. 信号分析的角度(与特定信号卷积)

相关

卷积与相关的关系

利用相关性

N = 50;
n = 0:N-1;
x = exp(-0.8*n);
y = randn(1,N)+x;
n1 = length(x)-1;
r = conv(y,fliplr(y)); % 利用卷积计算相关,这里需要将第二个参数翻转。
k = (-n1):n1;
stem(k,r);
xlabel('Lag index');ylabel('Amplitude');
gtext('r_{yy}[n]');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【4】Kubesphere_多租户

目录 创建企业空间角色 邀请新成员 部门管理 准备工作 创建部门 分配用户至部门 从部门中移除用户 删除和编辑部门 进入访问控制 可以配置企业空间、用户和用户角色 企业空间角色页面列出了以下四个可用的内置角色。创建企业空间时&#xff0c;KubeSphere 会自动创建内…

对称加密面临的那些挑战

密码对于多数人&#xff0c;是既熟悉又陌生的存在&#xff0c;注册账户、登录账号、网购&#xff0c;网络上的开展大多数行为都需要基于输入密码这一前提&#xff0c;从这方面谈&#xff0c;我们熟悉且熟知密码。然而这些由简单的字母、数字、符号等构成的简单口令&#xff0c;…

Spring Data默认值的错误

Spring Data有很多配置的默认值&#xff0c;但不一定都适合你。如一个依赖Cassandra 的项目&#xff0c;有时写入数据后&#xff0c;并不能立马读到。这种错误并没有什么报错&#xff0c;一切都是正常的&#xff0c;就是读不到数据。 1 源码解析 直接使用 Spring Data Cassan…

化繁为简,数字化推动企业数据库升级焕新 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 洪逸群 爱分析高级分析师 张良筠 爱分析分析师 外部专家&#xff08;按姓氏拼音排序&#xff09; 李远志 柏睿数据 副总裁 谢寅 镜舟科技 资深解决方案架构师 许哲 中信建投证券 数据组VP 姚延栋 YMatrix 创始人&#xff06;CEO 张晨…

实体店店铺管理软件应该怎么挑?有这几个功能的错不了!

现在开实体店的都是勇士&#xff0c;不仅要和同行竞争&#xff0c;还要和电商、直播竞争&#xff0c;没有点秘密武器根本不能生存。秘密武器之一&#xff0c;就是在做生意路上摸爬滚打多年的实体店老板们都在用的——实体店店铺管理软件&#xff01;它会帮助你从手工记账迈入智…

【敲敲云】零代码平台快速入门指南 — 下篇

敲敲云快速入门指南—上篇&#xff0c;我们已经介绍了工作表、视图的使用&#xff0c;现在我们再来看一下自动化工作流和仪表盘的使用 6、创建自动化工作流 工作流是由触发器和若干自动化任务节点组成。为触发器设置一个触发条件&#xff0c;当数据的变更符合触发条件时&#…

Linux系统中的文件查看和查询命令

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

向“全栈”进发,大型线上商城实战项目,Spring Boot + Vue 前后端分离版本的商城来了(文末有视频)

新蜂商城 Vue 版本&#xff0c;它来了&#xff01;&#xff08;文末有视频&#xff09; 如上图所示&#xff0c;新蜂商城 Vue 版本已经开发完成&#xff0c;这是新蜂商城开源项目的第一个大版本更新&#xff0c;根据大量的用户调研&#xff0c;最终决定将新蜂商城升级为 Spring…

DC-2 靶场实操

靶场搭建 ​ 靶场部署 下载网址&#xff1a;https://www.vulnhub.com/?qDC- tips&#xff1a;强烈建议各位师傅们使用迅雷或idm要不然下载靶场将是一个十分痛苦的环节 之后环境搭建操作步骤一致故此处搭建环境以DC-1为例 将下好的压缩包解压&#xff0c;你就会看到一个.ov…

堆排序(升序降序)

堆排序是利用堆这种数据结构而设计的一种排序算法&#xff0c;堆排序是一种选择排序&#xff0c;它的最坏、最好、平均时间复杂度均为O(nlogn)&#xff0c;是不稳定排序。 小根堆&#xff08;最小堆&#xff09;&#xff1a;每个结点的值都<其左右孩子结点的值。 大根堆&…

跨境电商独立站多语言,fecify saas商城解决方案

跨境独立站&#xff0c;面向的是全球国家&#xff0c;每个国家都有自己的语言&#xff0c;譬如&#xff1a;英语&#xff0c;德语&#xff0c;法语&#xff0c;俄语&#xff0c;西班牙语&#xff0c;葡萄牙语&#xff0c;韩语&#xff0c;日语&#xff0c;阿拉伯语&#xff0c;…

Latex-表格和图片

双栏排版表格跨栏加*号\begin{table*}...\end{table*}表格整体尺寸修改\resizebox{列宽}{行高}{...}列宽、行高可以为数值&#xff08;如50mm&#xff09;&#xff0c;也可以根据文字调整&#xff08;如\textwidth指自适应文字宽度&#xff09;表格内文字居中\begin{tabular}{c…

TypeScript变量声明,声明变量的关键字,变量的类型推导

目录 1.变量声明 2.赋值其他类型的值 3.声明变量的关键字 4.变量的类型推导&#xff08;推断&#xff09; 1.变量声明 声明了类型后TypeScript就会进行类型检测&#xff0c;声明的类型可以称之为类型注解&#xff1b; var/let/const 标识符: 数据类型 赋值; 这里的string是…

拉伯证券|年报行情如火如荼 博弈“超预期”还须警惕“风险点

本周以来&#xff0c;在指数转入高位盘整的背景下&#xff0c;A股商场资金围绕年报头绪展开布局&#xff0c;“年报预增”一跃成为商场最强主线&#xff0c;不少成绩预增公司短期股价收获明显超额收益。 Choice数据显现&#xff0c;截至1月12日盘前&#xff0c;开年以来共136家…

VM-图像旋转和拼接

有时受安装空间限制&#xff0c;相机安装方向和人观察角度不一致&#xff0c;需要对图像进行旋转&#xff0c;方便人员核对图像和实物VM中&#xff0c;对图像进行中心旋转的模块有“图像修正”、“几何变换”&#xff0c;其中“图像修正”只能对黑白图像进行旋转&#xff0c;“…

HTML表单:<form>标签

当您想要通过网页来收集一些用户的信息&#xff08;例如用户名、电话、邮箱地址等&#xff09;时&#xff0c;就需要用到 HTML 表单。表单可以接收用户输入的信息&#xff0c;然后将其发送到后端应用程序&#xff0c;例如 PHP、Java、Python 等&#xff0c;后端应用程序将根据定…

ASMR(网站)

ASMR秀 这个网站不需要特殊工具&#xff0c;直接就能看&#xff0c;内含欧美、儿本、H国的ASMR助眠视频节目。ASMR吧 失眠者的福音&#xff0c;也是男同胞的FU利&#xff01;ASMRS生活 专注科普知识。ASMRhtt删ps://除ww文w.as字mr打sho开w即可.com/

DeepMind 发布强化学习通用算法 DreamerV3,AI 成精自学捡钻石

内容一览&#xff1a;强化学习是多学科领域的交叉产物&#xff0c;其本质是实现自动决策且可做连续决策。本文将介绍 DeepMind 最新研发成果&#xff1a;扩大强化学习应用范围的通用算法 DreamerV3。 关键词&#xff1a;强化学习 DeepMind 通用算法 本文首发自微信公众号&#…

沙溢44岁、沈腾、邓超43岁、马丽40岁,他们就不能上春晚了吗

最近笔者浏览网络&#xff0c;发现很多吐槽央视春晚的声音&#xff0c;有些吐槽感觉有理有据&#xff0c;有些就有些强词夺理了。比如说&#xff0c;有人把今年参加春晚演员的年龄&#xff0c;做了一个简单的梳理&#xff0c;似乎想证明一些什么东西。 在这张年龄盘点表当中&am…

spring之面向切面编程AOP概述

文章目录前言一、介绍AOP二、面向切面编程的七大术语三、切点表达式前言 AOP&#xff08;Aspect Oriented Programming&#xff09;面向切面编程&#xff0c;是一种编程技术。 AOP是对OOP&#xff08;面向对象&#xff09;的补充延伸。 AOP底层使用的就是动态代理实现的。 Spr…