《数字信号处理》学习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

相关文章

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、统计次数;

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

uva 10131 最长子序列

题意: 给大象的体重和智商,求体重按从大到小,智商从高到低的最长子序列,并输出路径。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vect

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学