zl程序教程

您现在的位置是:首页 >  后端

当前栏目

MATLAB 学习笔记(6)MATLAB 的 upsample 函数和 downsample 函数

2023-09-14 09:16:21 时间

目录

upsample 和 downsample

程序验证

上采样 upsample

下采样 downsample

其他参数设定

总结


 

upsample 和 downsample

upsample 和 downsample 顾名思义就是上采样和下采样,但是在 MATLAB 中代表的含义是什么,用 MATLAB 做个而简单的测验。

以下是 MATLAB 官方对两个函数的解释。

bad0ed413c764d838bd12ea3612591a2.png

d4808c05cb28469d99abde69a91ad212.png

程序验证

上采样 upsample

首先定义一个 1×6 的矩阵 martix_A,并对其 4 倍上采样结果命名为 martix_B。

martix_A = [1 2 3 4 5 6]; martix_B = upsample(martix_A,4);

这是 martix_A 的数据格式

75260239f8e446ccaaa270093fb1b58e.png

martix_A 数据格式

这是 martix_B 的数据格式,这里由于数据太长就没有截全

36cb99bf0c9246bfbb3d7086982ac8f3.png

在工作区可以看出,矩阵 A 为 1×6 的矩阵,而矩阵 B 为 1×24 的矩阵,从上面的表格可以看出,upsample 的功能就是将矩阵中每个数据扩展 4 倍,剩余的 3 个数用 0 填充。

5ba2268c281e4fa78a4a5cd0befd46cb.png

martix_A  和 martix_B 格式

在从具体的图像去分析

下图是原始的 matrix A 的图像,可以看到是一条直线。

5c28f6f64fae408fa7f8c3fd1c583533.png

matrix A 图像

下图是由 matrix A 上采样形成的 matrix B 的图像,可以看到现在的图像不再是连续的,而是断断续续的,但是在每个峰的顶点依次对应的值为 1、2、3、4、5、6,而其余的点值均为 0,和之前矩阵的数值就能对应上了。

7c8e603b510a4b048c51fe8d2b71478a.png

matrix B 图像

理解了上采样 upsample 的含义,对于下采样 downsample 就很好理解了,下采样其实就是上采样的逆操作,上采样将一个点扩展到 4 个点,下采样就是将 4 个点缩小至 1 个点,这里依然用实际的程序解释。

下采样 downsample

对 martix_B 进行 4 倍的下采样操作

martix_C = downsample(martix_B,4);

可以看到,此时的 martix_C 和 martix_A 是一致的。

337c6ef2bf074c01924349ab9e57f2c6.png

数据格式

在数据格式上也是一样。

dbce91880b694c6a9d03ae22b5b2c66d.png

数据格式

在图像是也是和之前原始的图像一致。

db47183137634bc99935965c4322d686.png

matrix C 图像

其他参数设定

除此之外,这两个函数还可以添加另一个参数,phase:相位,这个参数可以更改样本数据的相位。

举个栗子

定义一个矩阵 matrix_D,参数 phase 设定为 2

martix_D = upsample(martix_A,4,2);

此时每个数都向右移了 2 位

a56b2da3a847468da1a63fe82ebdb877.png

matrix D 数据格式

从图像中也可以看出向右偏移了部分距离

0379847ae01b4a1283b672a006442a09.png

matrix D 图像

总结

上采样操作将每个输出数据间插入了 3 个 0,这就相当于将采样时间缩短为原来的 1/4,从频率上看,频率变为原来的 1/4。同时数据长度也变为原来的 4 倍。需要注意的是,4 倍升采样后,功率也变为原来的1/4,可以增加增益等方法处理。上采样的意义通俗的讲就在于增加数据与数据直接的间隙,在调制的时候就可以有效的避免产生混叠,下采样的是上采样的逆操作,理解了上采样,下采样自然就懂了。