亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用蟒蛇可視化小波系數

使用蟒蛇可視化小波系數

慕無忌1623718 2022-09-20 17:47:50
我需要使用小波變換的細節系數準備一個類似于下圖的圖。我嘗試了超過2周的時間來尋找我該怎么做。此圖表示小波變換在不同水平(1、2、3 和 4)下的細節系數。細節系數(cA4,cD4,cD3,cD2,cD1=系數)是一個一維數組,每個數組的大小都不同。<def wavelet(data):    waveletname = 'sym5'    coeffs = wavedec(data, 'sym5', level=5)    cA5,cD5,cD4,cD3,cD2,cD1=coeffs>
查看完整描述

1 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

一種可能的方法是將每個數組繪制為一維圖像,每個圖像位于不同的y位置。


plt.imshow需要一個 2D 數組,因此將數組的形狀重新設置為 1 作為第一維,將原始大小作為第二維,從而生成水平圖像。(如果它還不是一個numpy數組,則需要通過)進行轉換。通過該參數,可以設置邊界 x 和 y 值。 顯示每個像素之間的硬邊界。 是為了防止設置固定的寬高比。np.array(ci).reshape(1, -1)extentinterpolation='nearest'aspect='auto'


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()

http://img1.sycdn.imooc.com//63298c730001059d14610639.jpg

查看完整回答
反對 回復 2022-09-20
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號