最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Python的繪圖庫(matplotlib)繪制小波能量譜

 更新時間:2021年04月16日 16:46:09   作者:HoryChang  
這篇文章主要介紹了用Python的繪圖庫(matplotlib)繪制小波能量譜,代碼簡單詳細,思路清晰,需要的朋友可以參考下

時間小波能量譜

  • 反映信號的小波能量沿時間軸的分布。

由于小波變換具有等距效應(yīng),所以有:

在這里插入圖片描述

式中

在這里插入圖片描述

表示信號強度,對于式在平移因子b方向上進行加權(quán)積分

在這里插入圖片描述

式中

在這里插入圖片描述

代表時間-小能量譜

尺度小波能量譜

  • 反映信號的小波能量隨尺度的變化情況。

同理,對式在尺度方向上進行加權(quán)積分:

在這里插入圖片描述

式中

在這里插入圖片描述

連續(xù)小波變換

  • 連續(xù)小波變換的結(jié)果是一個小波系數(shù)矩陣,隨著尺度因子和位移因子變化。然后將系數(shù)平方后得到小波能量,把每個尺度因子對應(yīng)的所有小波能量進行疊加,那么就可以得到隨尺度因子變換的小波能量譜曲線。把尺度換算成頻率后,這條曲線就可視為是頻譜圖。

代碼如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pywt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
# 解決負號顯示問題
plt.rcParams['axes.unicode_minus'] = False  # 解決保存圖像是負號'-'顯示為方塊的問題
plt.rcParams.update({'text.usetex': False, 'font.family': 'serif', 'font.serif': 'cmr10', 'mathtext.fontset': 'cm'})
font1 = {'family': 'SimHei', 'weight': 'normal', 'size': 12}
font2 = {'family': 'Times New Roman', 'weight': 'normal', 'size': 18}
label = {'family': 'SimHei', 'weight': 'normal', 'size': 15}
xlsx_path = "../小波能量譜作圖.xlsx"
sheet_name = "表名"      
data_arr = pd.read_excel(xlsx_path, sheet_name=sheet_name)
column_name = '列名'     
row = 1024
y = data_arr[column_name][0:row]
x = data_arr['time'][0:row]
scale = np.arange(1, 50)
wavelet = 'gaus1'   # 'morl'  'gaus1'  小波基函數(shù)
# 時間-尺度小波能量譜
def time_scale_spectrum():
    coefs, freqs = pywt.cwt(y, scale, wavelet)  # np.arange(1, 31) 第一個參數(shù)必須 >=1     'morl'  'gaus1'
    scale_freqs = np.power(freqs, -1)  # 對頻率freqs 取倒數(shù)變?yōu)槌叨?
    fig = plt.figure(figsize=(5, 4))
    ax = Axes3D(fig)
    # X:time   Y:Scale   Z:Amplitude
    X = np.arange(0, row, 1)  # [0-1023]
    Y = scale_freqs
    X, Y = np.meshgrid(X, Y)
    Z = abs(coefs)
    # 繪制三維曲面圖
    ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
    # 設(shè)置三個坐標軸信息
    ax.set_xlabel('$Mileage/km$', color='b', fontsize=12)
    ax.set_ylabel('$Scale$', color='g', fontsize=12)
    ax.set_zlabel('$Amplitude/mm$', color='r', fontsize=12)
    plt.draw()
    plt.show()
# 時間小波能量譜
def time_spectrum():
    coefs, freqs = pywt.cwt(y, scale, wavelet)
    coefs_pow = np.power(coefs, 2)      # 對二維數(shù)組中的數(shù)平方
    spectrum_value = [0] * row    # len(freqs)
    # 將二維數(shù)組按照里程疊加每個里程上的所有scale值
    for i in range(row):
        sum = 0
        for j in range(len(freqs)):
            sum += coefs_pow[j][i]
        spectrum_value[i] = sum
    fig = plt.figure(figsize=(7, 2))
    line_width = 1
    line_color = 'dodgerblue'
    line_style = '-'
    T1 = fig.add_subplot(1, 1, 1)
    T1.plot(x, spectrum_value, label='模擬', linewidth=line_width, color=line_color, linestyle=line_style)
    # T1.legend(loc='upper right', prop=font1, frameon=True)  # lower ,left
    # 坐標軸名稱
    T1.set_xlabel('$time$', fontsize=15, fontdict=font1)  # fontdict設(shè)置子圖字體
    T1.set_ylabel('$E/mm^2$', fontsize=15, fontdict=font1)
    # 坐標刻度值字體大小
    T1.tick_params(labelsize=15)
    print(spectrum_value[269])
    plt.show()
# 尺度小波能量譜
def scale_spectrum():
    coefs, freqs = pywt.cwt(y, scale, wavelet)
    coefs_pow = np.power(coefs, 2)      # 對二維數(shù)組中的數(shù)平方
    scale_freqs = np.power(freqs, -1)   # 對頻率freqs 取倒數(shù)變?yōu)槌叨?
    spectrum_value = [0] * len(freqs)    # len(freqs)
    # 將二維數(shù)組按照里程疊加每個里程上的所有scale值
    for i in range(len(freqs)):
        sum = 0
        for j in range(row):
            sum += coefs_pow[i][j]
        spectrum_value[i] = sum
    fig = plt.figure(figsize=(7, 4))
    line_width = 1
    line_color1 = 'dodgerblue'
    line_style1 = '-'
    T1 = fig.add_subplot(1, 1, 1)
    T1.plot(scale_freqs, spectrum_value, label=column_name, linewidth=line_width, color=line_color1, linestyle=line_style1)
    # T1.legend(loc='upper right', prop=font1, frameon=True)  # lower ,left
    # 坐標軸名稱
    T1.set_xlabel('$Scale$', fontsize=15, fontdict=font1)  # fontdict設(shè)置子圖字體
    T1.set_ylabel('$E/mm^2$', fontsize=15, fontdict=font1)
    # 坐標刻度值字體大小
    T1.tick_params(labelsize=15)
    plt.show()
# 通過調(diào)用下面三個不同的函數(shù)選擇繪制能量譜
time_scale_spectrum()
# time_spectrum()
# scale_spectrum()

最終繪制的能量譜圖如下:

1.時間-尺度小波能量譜

2.時間小波能量譜

3.尺度小波能量譜

到此這篇關(guān)于用Python的繪圖庫(matplotlib)繪制小波能量譜的文章就介紹到這了,希望對你有幫助,更多相關(guān)用Python繪制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 利用OpenCV給照片換底色的示例代碼

    Python 利用OpenCV給照片換底色的示例代碼

    這篇文章主要介紹了Python 利用OpenCV給照片換底色,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Python實現(xiàn)希爾伯特變換(Hilbert transform)的示例代碼

    Python實現(xiàn)希爾伯特變換(Hilbert transform)的示例代碼

    希爾伯特變換(Hilbert transform)是一個對函數(shù)產(chǎn)生定義域相同的函數(shù)的線性算子,而且希爾伯特變換在信號處理中很重要,所以本文和大家分享了Python實現(xiàn)希爾伯特變換的代碼,需要的可以參考一下
    2023-04-04
  • Python使用qrcode庫實現(xiàn)生成二維碼的操作指南

    Python使用qrcode庫實現(xiàn)生成二維碼的操作指南

    二維碼是一種廣泛使用的二維條碼,因其高效的數(shù)據(jù)存儲能力和易于掃描的特點,廣泛應(yīng)用于支付、身份驗證、營銷推廣等領(lǐng)域,Python qrcode 庫是一個生成二維碼的工具,它能夠幫助我們輕松地生成二維碼,在本文中,我們將深入解析 qrcode 庫的使用方法及其實際應(yīng)用
    2025-01-01
  • python中np.random.permutation函數(shù)實例詳解

    python中np.random.permutation函數(shù)實例詳解

    np.random.permutation是numpy中的一個函數(shù),它可以將一個數(shù)組中的元素隨機打亂,返回一個打亂后的新數(shù)組,下面這篇文章主要給大家介紹了關(guān)于python中np.random.permutation函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • python 并發(fā)下載器實現(xiàn)方法示例

    python 并發(fā)下載器實現(xiàn)方法示例

    這篇文章主要介紹了python 并發(fā)下載器實現(xiàn)方法,結(jié)合實例形式詳細分析了并發(fā)下載器相關(guān)原理及Python并發(fā)下載視頻的相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • OpenCV圖像縮放resize各種插值方式的比較實現(xiàn)

    OpenCV圖像縮放resize各種插值方式的比較實現(xiàn)

    OpenCV提供了resize函數(shù)來改變圖像的大小,本文主要介紹了OpenCV圖像縮放resize各種插值方式的比較實現(xiàn),分享給大家,感興趣的可以了解一下
    2021-06-06
  • 掌握Python property裝飾器巧妙管理類的屬性

    掌握Python property裝飾器巧妙管理類的屬性

    property?是Python中的一個內(nèi)置裝飾器,它用于創(chuàng)建屬性并允許開發(fā)者定義特定的操作,例如獲取(getter)、設(shè)置(setter)和刪除(deleter)屬性值的方法,本文為大家講解如何利用這種特性使我們能更好地管理類的屬性
    2024-01-01
  • Python生成驗證碼、計算具體日期是一年中的第幾天實例代碼詳解

    Python生成驗證碼、計算具體日期是一年中的第幾天實例代碼詳解

    這篇文章主要介紹了Python生成驗證碼、計算具體日期是一年中的第幾天,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • python搭建虛擬環(huán)境的步驟詳解

    python搭建虛擬環(huán)境的步驟詳解

    相信每位python都知道,進行不同的python項目開發(fā),有的時候會遇到這樣的情況:python 版本不一樣,使用的軟件包版本不一樣。這種問題最佳的解決辦法是為不同的項目搭建獨立的 python 環(huán)境。下面來一起看看吧。
    2016-09-09
  • mac系統(tǒng)裝python后pip命令不能用的解決方案

    mac系統(tǒng)裝python后pip命令不能用的解決方案

    這篇文章主要介紹了mac系統(tǒng)裝python后pip命令不能用的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論

正阳县| 尖扎县| 内丘县| 潜山县| 鹤庆县| 民权县| 天全县| 比如县| 运城市| 奉化市| 玉山县| 封开县| 河津市| 南溪县| 历史| 内丘县| 潜山县| 沙田区| 邮箱| 唐山市| 澜沧| 延长县| 普安县| 嘉定区| 昔阳县| 如皋市| 隆昌县| 余姚市| 奉新县| 屏边| 东辽县| 莲花县| 安庆市| 印江| 四会市| 陵水| 屏南县| 政和县| 竹山县| 亚东县| 个旧市|