基于数据驱动的自适应正交小波基优化算法(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

相关推荐
BPM66619 小时前
2026流程管理软件选型指南:从Workflow、BPM到AI流程平台(架构+实战)
人工智能·架构
似水明俊德19 小时前
02-C#.Net-反射-学习笔记
开发语言·笔记·学习·c#·.net
金融小师妹19 小时前
基于多模态宏观建模与历史序列对齐:原油能源供给冲击的“类1970年代”演化路径与全球应对机制再评估
大数据·人工智能·能源
JamesYoung797119 小时前
OpenClaw小龙虾如何系统性节省Token,有没有可落地的方案?
人工智能
播播资源19 小时前
OpenAI2026 年 3 月 18 日最新 gpt-5.4-nano模型:AI 智能体的“神经末梢”,以极低成本驱动高频任务
大数据·人工智能·gpt
于先生吖19 小时前
Java框架开发短剧漫剧系统:后台管理与接口开发
java·开发语言
Sendingab19 小时前
2026 年 AI 数字人口播新趋势:智能体 Agent 将如何重构短视频内容生产与营销
人工智能·重构·音视频
05大叔19 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
智者知已应修善业19 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机