使用Matlab和Python

时间:2016-01-27 07:32:06

标签: python matlab wavelet-transform

基于以上数字: enter image description here

我需要制作一个这样的数组:

array = [(image),(1,ll),(1,lh),(1,hl),(2,ll),(2,lh),(2,hl)]

这里,图像是一个numpy 2D数组,其余的数组项是通过未抽取的离散小波变换获得的组件,它们也是2D数组。

例如,

(1,ll) is level 1 component,channel low-high
(2,hl) is level 2 component, channel high-low

使用Python 2.7,这非常简单。

udwt = np.asarray(pywt.swt2(image, 'haar',2))
array = [image,
         udwt[0][0] ,    #1,ll
         udwt[0][1][0],  #1,lh
         udwt[0][1][1],  #1,hl
         udwt[1][0] ,    #2,ll
         udwt[1][1][0],  #2,lh
         udwt[1][1][1]]  #2,hl

但是,我无法在Matlab中执行此操作。

udwt = ndwt2(image,2,'haar');

组件可以在udwt.dec的{​​{1}} dec结构的udwt字段中找到。

从Python代码创建并行:

1 to 7

问题是,我没有在Matlab(1,ll)中得到第一级低 - 低分量(近似分量)

使用Python Matlab udwt[0][0] My question udwt[0][1][0] udwt.dec{5} udwt[0][1][1] udwt.dec{6} udwt[1][0] udwt.dec{1} udwt[1][1][0] udwt.dec{2} udwt[1][1][1] udwt.dec{3} (Python's function gives components from level 1 to level n. Matlab's function gives components from level n to level 1.(reverse order)) 进行2级分解时,它只给出了一个近似值和每个级别的3个细节(lh,hl,hh)。

然而在Python的pywt.swt2()中,我得到了每个级别的近似值,以及每个级别的3个细节(lh,hl,hh)。

所以我在Matlab中找到这个1,ll?

我认为ndwt2为2,ll(第2级的低 - 低,而不是基于答案here的第1级。

udwt.dec{1}

我应该使用其他功能代替dec{ 1 }        approximation level n 吗?

0 个答案:

没有答案