《数字信号处理》学习03-矩形序列,实指数序列和复指数序列

2024-09-04 05:44

本文主要是介绍《数字信号处理》学习03-矩形序列,实指数序列和复指数序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一,矩形序列

1,由单位阶跃序列组成

 2,由单位冲击序列组成

二,实指数序列

三,复指数序列 


这篇文章着重学习:矩形序列,实指数序列和复指数序列。其它序列都比较简单,这里不再赘诉。

相关内容参考自:唐向宏著作的《数字信号处理》P12,电子书籍请通过专栏下的链接下载。

一,矩形序列

矩形序列用 R_{N}(n) 表示。

  • 其中 N 表示矩形序列的序列值 1 的数量(个数)(N 也表示矩形序列的长度),离散时间变量 n 的取值范围为:[0,N-1](从 0 到 N-1 ,共有 N-1-0+1=N 个序列值,序列长为N)
  • 当 n 为其它值时(小于0 或大于 N 的部分),矩形序列的序列值为 0 。

例如 R_{6}(n) 就是序列长为6,离散时间变量 n\in [0,5] 的矩形序列,对应的波形图如下:

% 定义离散时间变量 n
n =0:5; % n是一个数组,里面的元素:从0到5,总共6个样本点
% 使用zeros函数定义矩形序列 R6(n),长度为6,所有值为0
R6= zeros(length(n));  % length函数可以返回数组n中元素的个数
for k=n   % 将位于离散时间变量n区间内的序列值都赋值为 1 R6(k+1)=1;
end
% 绘制矩形序列
stem(n, R6, 'filled');
xlabel("离散时间变量n");
ylabel("R6(n)");
title("长度为6的矩形序列R6(n)");
axis([-2 6 0 2]);
grid on; % 添加网格线

也可以使用如下代码绘制矩形序列R6(n)

% 定义离散时间变量 n
n =0:5; % n是一个数组,里面的元素:从0到5,总共6个样本点
% 使用zeros函数定义矩形序列 R6(n),长度为6,所有值为0
R6= ones(length(n));  % length函数可以返回数组中元素的个数
% 绘制矩形序列
stem(n, R6, 'filled');
xlabel("离散时间变量n");
ylabel("R6(n)");
title("长度为6的矩形序列R6(n)");
axis([-2 6 0 2]);
grid on; % 添加网格线

从绘制出来的矩形序列R6(n)的波形图中可以观察到,矩形序列R6(n)跟单位阶跃序列 u(n) 很像。

1,由单位阶跃序列组成

单位阶跃序列u(n)波形图及代码如下👇:

n=0:20;
un=n>=0;
stem(n,un,'filled');
xlabel("离散时间变量n");
ylabel("u(n)");
title("单位阶跃序列u(n)");
axis([-1 21 0 2]);

 单位阶跃序列在 n > = 0 的地方都有取值(凡是带有“单位”两个字的,对应的值都是 1 ,例如单位向量的模 为 1 ,单位 矩形序列在指定离散时间变量范围内的序列值为 1 等),n<0 时单位阶跃序列的序列值全为 0;

因此,可以看到,单位阶跃序列 u(n) 如果去掉 n==6及其后面的序列,剩下部分的就是单位矩形序列 R6(n)

 所以,矩形序列的表达式可以用单位阶跃序列来表示:

R_{N}(n)=u(n)-u(n-N)

 2,由单位冲击序列组成

 单位冲击序列δ(n)波形图及代码如下👇:

n=-1:6;
deltan=n==0;
stem(n,deltan,'filled');
xlabel("离散时间变量n");
ylabel("δ(n)");
title("单位冲击序列δ(n)");
axis([-1 1 0 2]);

 对于单位冲击序列 δ(n) 而言,它只在离散时间变量 n==0 的地方有取值 1,其它地方都为 0,这种性质很特别,在处理很多信号的过程中,经常用它对待处理的序列进行抽样,例如:待处理的序列x(n) 乘上 δ(n)=x(0)\delta (n),本来序列x(n)在n!=0 的地方是有序列值的,但由于δ(n)  在n !=0 的地方序列值为0,从而导致 x(n)*0=0 ,x(n)只在 n==0 的地方 有序列值,既x(0)*δ(n)。因此单位冲击序列也称为单位抽样序列。
【需要注意】
单位冲击序列 δ(n) 可以有左右移位,从而形成超前或滞后单位冲激序列,当 δ(n) 序列向左平移一位 ( 离散时间变量 n 遵循 “左加右减”)形成超前序列 δ(n+1) :

n=-3:6;
deltan=n==-1;
stem(n,deltan,'filled');
xlabel("离散时间变量n");
ylabel("δ(n+1)");
title("单位冲击序列δ(n)的超前序列:δ(n+1)");
axis([-2 2 0 2]);

 δ(n+1)  比 δ(n) 提前了一个单位时间。

 相应的滞后序列 δ(n-1) :

 δ(n-1)  比 δ(n) 滞后了一个单位时间。 

如果单位冲击序列δ(n) 有超前 δ(n+N) 或者是滞后 δ(n-N)  ,那么就会有如下的抽样:

  1. 超前序列 δ (n+N)对 序列 x(n) 的抽样: x(n)*\delta (n+N)=x(N)*\delta(n+N)
  2. 滞后序列 δ (n-N) 对 序列 x(n) 的抽样: x(n)*\delta (n-N)=x(N)*\delta(n-N)

这里的 * 表示离散时间序列卷积操作。实际效果是用单位冲激序列在时刻  n=N_{n}=N 处“采样” x(n) 的值,从而得到信号x(n) 在时刻 n=N_{n}=N 的滞后值:x(N)*\delta(n-N) (或超前值: x(N)*\delta(n+N)  )

由单位冲击序列 δ(n) 及其 滞后序列 组成的长度为6的矩形序列R_{6}(n) 图像如下👇:

 所以,矩形序列的表达式可以用单位冲击序列来表示:

R_{N}(n)=\delta (n)+\delta(n-1)+ \delta(n-2)+\delta(n-3)+ \delta(n-4)+\delta(n-5)+...+\delta(n-N-1)=\sum_{m=0}^{N-1}\delta(n-m)

二,实指数序列

 实指数序列就是实指数幂 a^{n} 乘上阶跃信号 u(n),既 x(n)=a^{n}u(n)。其中,a和n都是实数。

 具体来说:

  • 如果|a|>1,实指数序列x(n)的幅度随着 n 的增大而增大,实指数序列 x(n) 发散。
  • 如果|a|<1,实指数序列x(n)的幅度随着 n 的增大而减小,实指数序列 x(n) 收敛。

因为发散的序列无法绘制出来,所以这里只使用matlab绘制出当  |a|<1 时,实指数序列x(n)收敛的波形,如下图所示👇

a = 0.5; %  |a| < 1
n = 0:20; % 离散时间变量 n 的取值范围
xn = a.^n; % 计算 a^n
xn(n < 0) = 0; % u(n) = 0 for n < 0
stem(n, xn, 'filled');
title(['实指数序列x(n)=a^nu(n),且a=', num2str(a)]);
%num2str(a) 将 a 的数值转换为字符串,并与其他文本连接在一起,形成完整的标题。
xlabel('离散时间变量n');
ylabel('x(n)');
grid on;
axis([-1 20 0 2]); % 设置坐标轴范围

三,复指数序列 

复指数序列 x(n)=e(σ+jω_{0})n 。具体来说:

1)σ:表示信号的衰减或增长率,

jω_{0} :是复数部分,其中ω_{0}是信号的角频率,决定了信号的旋转速率。

可以使用MATLAB来绘制这个复指数序列的实部和虚部。以下是相关的效果图和代码:

假设 σ=−0.1(信号随时间衰减,会逐渐变平) ,ω_{0}=1(信号的旋转速率为1):

  • 如果 σ<0,信号会随时间衰减;

  • 如果σ>0,信号会随时间增长;

  • 如果 σ=0,信号将保持不变(仅为旋转信号)具有恒定的幅度和变化的相位。用极坐标可以表示成 x(n)=ejω_{0}n 。直角坐标图像通过极坐标和直角坐标的图像,可以直观地观察到这一特性。

下面是将复指数序列  的极坐标系图及实部和虚部绘制在一张图中,如下👇:

sigma=-0.5;       %信号的增长或衰减率
omega0 = 1;    % 角频率
n = 0:50;      % 离散时间变量 n
% 计算复指数序列
x_n = exp(sigma+1i * omega0 * n);
% 绘制极坐标图
figure;  %创建图形窗口,也可以不写
subplot(2, 1, 1); %两行一列的图纸,虚部图像在第一行
polarplot(omega0 * n, abs(x_n), 'b', 'LineWidth', 1.5);
%polarplot:绘制极坐标系的函数
title(['复指数序列x(n)的极坐标图 = e^{(σ+j\omega_0 ) n},σ=',num2str(sigma)]);
% 绘制实部和虚部
subplot(2, 1, 2);  
plot(n, real(x_n), 'b', 'LineWidth', 1.5);%宽度为 1.5 个单位的blue蓝色线条绘制
hold on;
plot(n, imag(x_n), 'r', 'LineWidth', 1.5);%宽度为 1.5 个单位的red红色线条绘制
title('复指数序列x(n)的实部和虚部');
xlabel('离散时间变量n');
ylabel('幅度');
legend('实部', '虚部');
grid on;

在文章所在专栏的唐向宏著作的《数字信号处理》一书中,复指数序列的定义如下:

arg  复数辐角 (argument of complex number)指的是复数的辐角主值。

例如:Z=|Z|(COS\theta +jsin\theta)  ,其中:

  • |Z|为 Z的模;
  • θ是Z的辐角,记作θ=arg(Z);

任何一个不为零的复数 Z=a+jb 的辐角有无限多个值,且这些值相差2Π的整数倍

辐角的主值:\theta \in (-\Pi ,\Pi)

辐角的主值唯一,且 Arg(Z)=arg(z)+2kΠ

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

这篇关于《数字信号处理》学习03-矩形序列,实指数序列和复指数序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

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

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

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

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

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

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

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;