小波变换中的信号扩展(延拓)问题

题目:小波变换中的信号扩展(延拓)问题
本篇主要是做为上一篇《压缩感知稀疏基之离散小波变换》的一个补充说明。
首先给出一个卷积的例子:
在这里插入图片描述 从上面的卷积计算过程中可以看出,在计算y(0)和y(4)时,x(n)和h(n)只有一个点对应,在计算其它值时有两个点对应,以上计算还可以用矩阵表示如下:
在这里插入图片描述
我们可以对x(n)按某种规律进行扩展,以使求卷积过程中x(n)和h(n)一直有两个点(h的长度)对应,这就是信号的扩展。
观察可知,只要对x(n)左右各扩展一个点即可,在Matlab中有函数wextend对信号进行扩展,扩展的模式如下:
在这里插入图片描述
注意最后一种’per’模式,因为我们在生成N×N的小波变换矩阵时用的是此模式,所以重点阐述这种模式。
在Matlab分别运行两条命令,可得输出结果如下:

x=[1 2 34];wextend(1,’per’,x,1)
ans =
4 1 2 3 4 1

x=[1 2 3];wextend(1,’per’,x,1)
ans =
3 1 2 3 3 1

命令wextend(1,’per’,x,1)中的输入参数中第一个“1”表示是一维扩展,最后一个“1”表示左右各扩展一个点。从上面的两个结果基本可知得到’per’模式的扩展规律:
1)对于长度为偶数的序列,直接按周期进行扩展;
2)对于长度为奇数的序列,先把序列延长一个点变为偶数后再按周期进行扩展。
在上面的例子中,若对信号按’per’模式进行扩展,则计算过程如下:
在这里插入图片描述
观察可以发现由h构成的矩阵各行实际上是一个循环移位的结果。
我们可以在’per’扩展模式下写出一个较为复杂、但代表性更强的表达式,设x(n)长度为8,h(n)的长度为4,若对x(n)按’per’扩展模式扩展,则卷积表达式的矩阵形式为:
在这里插入图片描述
在Matlab中编程得到这个变换矩阵时,可以分成几个步骤:
1)参数初始化:N=length(x),L=length(h),在这里N=8,L=4
2)得到h=[h(0),h(1),h(2),h(3)]的反转序列,即h_1=[h(3),h(2),h(1),h(0)],这一操作可使用命令“h_1 = fliplr(h);”实现
3)由h_1得到一个长为N的基本行向量:p1_0 = [h_1zeros(1,N-L)];
这里得到的p1_0实际上即是上面变换矩阵的第4行
4)通过对p1_0循环移位得到变换矩阵中的各行:
Matlab中有循环移位函数circshift,但这个函数是对行之间循环移位,而这里的行向量p1_0是1行N列,为了实现循环移位,可以对其先进行转置变为列向量再进行循环移位,移位结束后再转置变回行行量;
若要得到变换矩阵中的第一行:circshift(x’,-(L-1)),如:

x=[4 3 2 10 0 0 0]
x =
4 3 2 1 0 0 0 0

circshift(x’,-(4-1))’
ans =
1 0 0 0 0 4 3 2

同理可以得到其它各行。

            转载自彬彬有礼的专栏
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值