基于数据驱动的自适应正交小波基优化算法(Python)

代码实现了一个基于数据驱动的自适应正交小波基优化算法,主要功能包括:

  1. 数据生成与初始化:

生成高斯白噪声数据集(32×1000矩阵)

设置5级小波分解结构和初始参数(方差惩罚因子λ₂=0.02)

  1. 分层小波基优化:

参数化滤波器组:使用角度参数γ和θ表示正交小波滤波器

优化目标函数:最小化投影能量(数据在奇数小波基上的投影平方和)和方差惩罚项(控制滤波器在频域的集中度)

L-BFGS优化:采用拟牛顿法高效求解非线性优化问题

逐层细化:从粗到细逐级优化,每层优化后衰减惩罚因子(λ₂←λ₂/4)

  1. 小波变换与重构:

自适应DWT:使用优化后的小波基对数据进行变换

IDWT重构:通过脉冲响应重构各层小波函数

多尺度分析:在5个不同尺度上分析信号特征

  1. 可视化与输出:

绘制优化后的小波函数(垂直偏移显示)

保存结果为高清图像(optimized_wavelets.png)

创新点:通过数据驱动方式自动学习最优小波基,相比传统固定小波基(如Daubechies),能更好地匹配输入数据的统计特性,在信号处理、特征提取等应用中具有优势

复制代码
import torch
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt
import time

# ================================================================
# 辅助函数
# ================================================================

def dwtos(z, u, v):
    """
    单级离散小波变换 (DWT)
    
    参数:
        z : 输入信号 (N x m, N 应为偶数)
        u : 低通滤波器 (N x 1)
        v : 高通滤波器 (N x 1)
    
    返回:
        w : 小波系数 (N x m)
    """
    # 获取输入信号的维度
    N, m = z.shape
    
    # 计算低通滤波器的共轭翻转 (周期延拓)
    utilde = torch.conj(torch.roll(torch.flip(u, dims=[0]), shifts=1, dims=0))
    
    # 计算高通滤波器的共轭翻转 (周期延拓)
    vtilde = torch.conj(torch.roll(torch.flip(v, dims=[0]), shifts=1, dims=0))
    
    # 修复维度问题: 将滤波器扩展为与信号相同的维度
    vtilde = vtilde.view(-1, 1)  # 从 (N,) 变为 (N, 1)
    utilde = utilde.view(-1, 1)  # 从 (N,) 变为 (N, 1)
    
    # 频域卷积和下采样 (高通路径)
    # 步骤: FFT -> 频域相乘 -> IFFT -> 下采样(取奇数索引)
    fft_z = torch.fft.fft(z, dim=0)
    fft_vtilde = torch.fft.fft(vtilde, dim=0)
    # 修复: 确保维度匹配
    x = torch.fft.ifft(fft_z * fft_vtilde, dim=0)
    x = x[::2, :]  # 下采样 (每隔一个点取一个)
    
    # 频域卷积和下采样 (低通路径)
    fft_utilde = torch.fft.fft(utilde, dim=0)
    y = torch.fft.ifft(fft_z * fft_utilde, dim=0)
    y = y[::2, :]  # 下采样 (每隔一个点取一个)
    
    # 合并高通和低通结果
    w = torch.cat((x, y), dim=0)
    return w

参考文章:

基于数据驱动的自适应正交小波基优化算法(Python) - 哥廷根数学学派的文章
https://zhuanlan.zhihu.com/p/1967881688173508575

相关推荐
AngelPP17 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年17 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
AI探索者17 小时前
LangGraph StateGraph 实战:状态机聊天机器人构建指南
python
AI探索者17 小时前
LangGraph 入门:构建带记忆功能的天气查询 Agent
python
九狼17 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS17 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区18 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈19 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
FishCoderh19 小时前
Python自动化办公实战:批量重命名文件,告别手动操作
python
躺平大鹅19 小时前
Python函数入门详解(定义+调用+参数)
python