当然可以!我们可以使用Matplotlib库来绘制小波变换后的频谱图。以下是对代码进行扩展,在计算小波变换的特征后,绘制频谱图:

import numpy as np
import pywt
import matplotlib.pyplot as plt

def compute_wavelet_features(signal):
    wavelet = 'haar'  # 小波类型
    level = 3  # 分解的层数

    coeffs = pywt.wavedec(signal, wavelet, level=level)

    features = []
    for i, coeff in enumerate(coeffs):
        mean = np.mean(coeff)
        std = np.std(coeff)
        max_val = np.max(coeff)
        min_val = np.min(coeff)
        median = np.median(coeff)

        features.extend([mean, std, max_val, min_val, median])

    return features

signal = [0.1, 0.2, 0.3, 0.4, 0.3, 0.2, 0.1]

features = compute_wavelet_features(signal)

# 绘制频谱图
plt.plot(signal, label='原始信号')
for i in range(len(features)):
    approx = pywt.upcoef('a', features[i], 'haar', level=len(features)-i-1)
    plt.plot(approx, label=f'频带{i+1}')
plt.legend()
plt.xlabel('时间')
plt.ylabel('幅值')
plt.title('小波变换频谱图')

plt.show()

运行这段代码将会得到小波变换后的频谱图。其中,原始信号被绘制在第一条曲线上,每个频带的特征曲线分别绘制在后续的曲线上。你可以根据需要调整图表的样式和布局。

标签: 常规


原文地址: https://gggwd.com/t/topic/XyJ 著作权归作者所有。请勿转载和采集!