热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

压缩感知稀疏基之离散哈特莱变换(DHT)和离散W变换

题目:压缩感知稀疏基之离散哈特莱变换(DHT)和离散W变换在前面的《压缩感知的常见稀疏基名称及离散傅里叶变换基》中提到了DWT,并没有提到离散哈特莱变换(DiscreteHa

题目:压缩感知稀疏基之离散哈特莱变换(DHT)和离散W变换

 

在前面的《压缩感知的常见稀疏基名称及离散傅里叶变换基》中提到了DWT,并没有提到离散哈特莱变换(Discrete Hartley Transform, DHT),但讨论正交变换理论下的稀疏基,比较常见的正交变换应该提一下的,虽然前面提到的DWT也不知道是不是指的离散W变换,因为一般情况下DWT是指的离散小波变换(DiscreteWavelet Transform, DWT),有时也指离散沃尔什变换(Discrete WalshTransform, DWT),不管它是不是指的离散W变换吧,这里都讨论一下吧,之所以把DHT和离散W变换放到一起是因为DHT是离散W变换的四种形式中的第一种形式。下面提到DWT即指离散W变换而不是离散小波变换等其它变换。

注:有时DHT也用来表示离散哈达玛变换(Discrete HadamardTransform DHT)。

一、离散哈特莱变换(Discrete Hartley Transform, DHT)

哈特莱是一个人名,英文为Hartley,有时音译为哈特利或哈特雷,他在1942年提出连续Hartley变换,42年后于1984年,Bracewell提出了离散Hartley变换(DHT)。

在这里,我直接将DHT公式给成正交变换的形式:


上面定义式中我直接将定标因子写为1/N的开方,这样保证DHT的变换矩阵HN直接是正交矩阵

观察发现矩阵HN不但是正交矩阵并且还是对称矩阵(转置与本身相等),因此逆矩阵与本身相等(正交矩阵的逆矩阵等于其转置),即DHT的逆变换与正变换形式相同。

DHT也有四种形式,上面给出的是第一种形式,其它参见维基百科【1】。

二、离散W变换(Discrete W Transform, DWT)

有关离散W变换,我一直想找出它的全中文名字,但我查了好久也没有找到,英文文献中是以DiscreteW Transform来表述的,中文文献中是以离散W变换来表述的。离散W变换是由王中德提出的,所以我猜这里的“W”应该是指其姓氏“王(Wang)”的首字母W,因此若要找出它的全中文名字应该是“离散王中德变换”,当然提出者也没有这么命名,这里纯属我自己推测了。

采用文献【2】中的定义,离散W变换定义如下:

其中α和β分别是时域和频率的参数,它们的取值可以是(0,0)、(1/2,0)、(0,1/2)、(1/2,1/2)中的任一个,也就是说DWT共有四种形式,依次为DWT-Ⅰ、DWT-Ⅱ、DWT-Ⅲ、DWT-IV。可以发现,当取(0,0)时的DWT-Ⅰ即为DHT(利用和差化积公式将求和里面的sin展开即可)。

DWT-Ⅳ不但可以得到信号整数倍的谐波,而且可以得到分数倍的谐波。

三、离散W变换奠基人王中德介绍

在网上搜索了“王中德”这个人,却搜不到任何有用信息,感觉如此关注于基础研究的人,无论是IEEE还是其它权威期刊上发表过很多文章,网上竟然没有他的信息,无论是正面的还是负面的。在网络如此发达的今天,哪怕是一个博导教授一般在百度百科里也有会的,不知道到底是为什么没有王先生的信息。最终我从两篇论文中找到了一些有关王中德的个人信息,总结如下:

王中德,1937年3月19日生于江苏南京,1960年毕业于云南大学物理系,毕业后在昆明物理所工作,1980年至1983年在美国亚利桑那(Arizona)大学电机系数字图像分析实验室进修,曾获美国国家自然科学基金,后来到北京邮电学院电信工程系工作。研究方向包括算法研究、信号处理、图像处理等。IEEE高级会员、美国数学学会会员、中国电子学会会员、中国物理学会会员。



四、如何得到DHT基和DWT基

(1)离散W变换

其实写一个通用的函数得到四种离散W变换的变换矩阵就已经得到了DHT的变换矩阵,所以这里先讨论DWT。

Matlab中有dwt函数,但并不是指的离散W变换,而是离散小波变换,谁让小波变换更牛更广一些呢,这里我给出一个离散W变换的Matlab函数:

function [ X ] = DWangT( x,dwt_type )
%DWangT Summary of this function goes here
%   Detailed explanation goes here
%   x is the input single
%   dwt_type decides DWangT types
%   X is the discrete W transform of x
N = length(x);
[x_rows,x_columns] = size(x);
if x_rows 
 

这里根据输入参数dwt_type的值决定是哪一种离散W变换。

若要得到得到离散W变换的变换矩阵,稍微把上面函数变一下形就可以了:

function [ WN ] = DWangTmtx( N,dwt_type )
%DWangTmtx Summary of this function goes here
%   Detailed explanation goes here
%   N is the dimension of WN
%   dwt_type decides DWangT types
%   WN is the Discrete W Transform matrix
[k,n] = meshgrid(0:N-1);
if dwt_type==2
    alpha = 1/2;
    beta = 0;
elseif dwt_type==3
    alpha = 0;
    beta = 1/2;
elseif dwt_type==4
    alpha = 1/2;
    beta = 1/2;
else
    alpha = 0;
    beta = 0;
end
WN = sqrt(2/N) * sin(pi/4 + 2*pi/N * (n+alpha) .* (k+beta));
end

(2)离散哈特莱变换

其实只要令上面的dwt_type=1即可得到DHT变换和DHT变换矩阵,这是还是单独给出DHT的变换函数:

function [ X ] = DHartleyT( x )
%DHartleyT Summary of this function goes here
%   Detailed explanation goes here
%   x is the input single
%   X is the discrete Hartley transform of x
N = length(x);
[x_rows,x_columns] = size(x);
if x_rows 
 

若要得到得到离散哈特莱变换的变换矩阵,稍微把上面函数变一下形就可以了:

function [ HN ] = DHartleyTmtx( N )
%DHartleyT Summary of this function goes here
%   Detailed explanation goes here
%   N is the dimension of WN
%   HN is the Discrete Hartley Transform matrix
[k,n] = meshgrid(0:N-1);
HN = sqrt(1/N)*(cos(2*pi/N*n.*k)+sin(2*pi/N*n.*k));
end

五、结语

离散W变换就说这么多吧,深层次的理解还没有多少,有新理解的话再发文。

 

参考文献:

【1】维基百科.离散哈特利转换,http://zh.wikipedia.org/zh-cn/離散哈特利轉換

【2】胡广书.数字信号处理理论、算法与实现(第三版)[M]. 北京:清华大学出版社,2012:351-352.


推荐阅读
  • 本文介绍了如何利用OpenCV库进行图像的边缘检测,并通过Canny算法提取图像中的边缘。随后,文章详细说明了如何识别图像中的特定形状(如矩形),并应用四点变换技术对目标区域进行透视校正。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
  • 本文探讨了一种统一的语义数据模型,旨在支持物联网、建筑及企业环境下的数据转换。该模型强调简洁性和可扩展性,以促进不同行业间的插件化和互操作性。对于智能硬件开发者而言,这一模型提供了重要的参考价值。 ... [详细]
  • SDWebImage第三方库学习
    1、基本使用方法异步下载并缓存-(void)sd_setImageWithURL:(nullableNSURL*)urlNS_REFINED_FOR_SWIFT;使用占位图片& ... [详细]
  • DirectShow Filter 开发指南
    本文总结了 DirectShow Filter 的开发经验,重点介绍了 Source Filter、In-Place Transform Filter 和 Render Filter 的实现方法。通过使用 DirectShow 提供的类,可以简化 Filter 的开发过程。 ... [详细]
  • 本文详细介绍了如何在 Oracle 数据库中进行筛选备份和恢复操作,包括权限授予、目录管理、数据导出和导入等步骤。 ... [详细]
  • 在移动端开发中,多点触控手势是提升用户体验的重要手段。然而,目前只有iOS浏览器原生支持手势事件,其他设备需要通过touchstart、touchmove和touchend等基础事件进行自定义实现。本文将详细介绍如何在Vue项目中实现多点触控手势。 ... [详细]
  • 说明Python教程正在编写中,欢迎大家加微信sinbam提供意见、建议、纠错、催更。drymail是一个邮件发送库,封装了Python的smtplib ... [详细]
  • 本文档提供了 TA-Lib 的安装指南、快速入门、高级应用及各类技术指标的详细介绍。 ... [详细]
  • 本文探讨了在 SQL Server 2012 的 Integration Services 项目中配置 ADO.NET 源时遇到的错误及其解决方案。 ... [详细]
  • CSS 百分比单位的取值依据是什么
    本文详细探讨了 CSS 中百分比单位的取值依据,包括不同定位方式下的包含块概念及其应用。通过具体的示例和代码,帮助读者更好地理解和掌握这一知识点。 ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 使用方法:将要控制的角色拖到TargetBody,将相机的焦点拖到CamerPivot,,建议CameraPivot是一个放在TargetBody下的子物体,并且位置应该是在Tar ... [详细]
author-avatar
闹闹依旧不闹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有