热门标签 | 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.


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 深入解析 Vue 的 Transition 组件与第三方动画库的结合使用
    本文详细介绍了 Vue 中的 Transition 组件,探讨其内置类名机制、触发时机及自定义类名的应用。同时,结合 animate.css 和 GSAP 等第三方库,展示了如何实现复杂的动画效果。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 本文探讨了如何在 F# Interactive (FSI) 中通过 AddPrinter 和 AddPrintTransformer 方法自定义类型(尤其是集合类型)的输出格式,提供了详细的指南和示例代码。 ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
  • 本文介绍了如何在 C# 和 XNA 框架中实现一个自定义的 3x3 矩阵类(MMatrix33),旨在深入理解矩阵运算及其应用场景。该类参考了 AS3 Starling 和其他相关资源,以确保算法的准确性和高效性。 ... [详细]
  • Python中HOG图像特征提取与应用
    本文介绍如何在Python中使用HOG(Histogram of Oriented Gradients)算法进行图像特征提取,探讨其在目标检测中的应用,并详细解释实现步骤。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 洞态IAST Java Agent 实现AOP技术详解
    本文深入探讨了洞态IAST Java Agent如何通过AOP技术实现方法调用链和污点值传播等功能,为读者提供了详细的源码分析。 ... [详细]
  • 理解与应用:独热编码(One-Hot Encoding)
    本文详细介绍了独热编码(One-Hot Encoding)与哑变量编码(Dummy Encoding)两种方法,用于将分类变量转换为数值形式,以便于机器学习算法处理。文章不仅解释了这两种编码方式的基本原理,还探讨了它们在实际应用中的差异及选择依据。 ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • ML学习笔记20210824分类算法模型选择与调优
    3.模型选择和调优3.1交叉验证定义目的为了让模型得精度更加可信3.2超参数搜索GridSearch对K值进行选择。k[1,2,3,4,5,6]循环遍历搜索。API参数1& ... [详细]
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社区 版权所有