使用python可视化小波系数

问题描述 投票:0回答:1

[我需要使用小波变换的细节系数来准备与下图相似的图。我试图进行2个多星期的时间才能找到解决方法。

enter image description here

此图表示不同级别(1、2、3和4)的小波变换的细节系数。细节系数(cA4,cD4,cD3,cD2,cD1 = coeffs)是一维数组,每个都有不同大小。

<

def wavelet(data):
    waveletname = 'sym5'
    coeffs = wavedec(data, 'sym5', level=5)
    cA5,cD5,cD4,cD3,cD2,cD1=coeffs

>

python image matplotlib signal-processing wavelet
1个回答
0
投票

一种可能的方法是将每个数组绘制为一维图像,每个图像都位于不同的y位置。

[plt.imshow需要一个2D数组,因此将数组重塑为第一个尺寸为1,原始尺寸为第二个尺寸将得到一个水平图像。

from matplotlib import pyplot as plt
import numpy as np

# generate six random 1d arrays of different sizes
coeffs = [np.random.uniform(0, 1, np.random.randint(30, 100)) for i in range(6)]
#cA5, cD5, cD4, cD3, cD2, cD1 = coeffs

for i, ci in enumerate(coeffs):
    plt.imshow(ci.reshape(1, -1), extent=[0, 1000, i + 0.5, i + 1.5], cmap='inferno', aspect='auto', interpolation='nearest')

plt.ylim(0.5, len(coeffs) + 0.5) # set the y-lim to include the six horizontal images
# optionally relabel the y-axis (the given labeling is 1,2,3,...)
plt.yticks(range(1, len(coeffs) + 1), ['cA5', 'cD5', 'cD4', 'cD3', 'cD2', 'cD1'])

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.