主要内容:

  1. 傅里叶矩阵及其MATLAB实现
  2. 小波变换矩阵及其MATLAB实现 

傅里叶矩阵及其MATLAB实现

傅里叶矩阵的定义:(来源: http://mathworld.wolfram.com/FourierMatrix.html

傅里叶矩阵的MATLAB实现:

  dftmtx(N) is the N-by-N complex matrix of values around the unit-circle whose inner product with a column vector of length N yields the discrete Fourier transform of the vector. If X is a column vector of length N, then dftmtx(N)*X yields the same result as FFT(X); however, FFT(X) is more efficient.

  The inverse discrete Fourier transform matrix is CONJ(dftmtx(N))/N.

% clc;clear;
N = ;
X = randn(N,);
dft_result1 = dftmtx(N)*X;
dft_result2 = fft(X);
% isEqual = all(dft_result1 == dft_result2);
err = norm(dft_result1(:)-dft_result2(:));
if err < 0.01
fprintf('dftmtx(N)*X yields the same result as FFT(X)');
else
fprintf('dftmtx(N)*X does not yield the same result as FFT(X)');
end

小波变换矩阵及其MATLAB实现

小波变换矩阵的概念:

参考:http://blog.csdn.net/jbb0523/article/details/42470103

小波变换矩阵的MATLAB实现:

function [ ww ] = dwtmtx( N,wtype,wlev )
%DWTMTX Discrete wavelet transform matrix
% This function generates the transform matrix ww according to input
% parameters N,wtype,wlev .
%Detailed explanation goes here
% N is the dimension of ww
% wtype is the wavelet type
% wlev is the number of decomposition level
%NOTE: The extension mode must be Periodization('per')
[h,g]= wfilters(wtype,'d'); %Decomposition low&high pass filter
L=length(h); %Filter length
h_1 = fliplr(h); %Flip matrix left to right
g_1 = fliplr(g);
loop_max = log2(N);
loop_min = double(int8(log2(L)))+;
if wlev>loop_max-loop_min+
fprintf('\nWaring: wlev is too big\n');
fprintf('The biggest wlev is %d\n',loop_max-loop_min+);
wlev = loop_max-loop_min+;
end
ww=;
for loop = loop_max-wlev+:loop_max
Nii = ^loop;
p1_0 = [h_1 zeros(,Nii-L)];
p2_0 = [g_1 zeros(,Nii-L)];
p1 = zeros(Nii/,Nii);
p2 = zeros(Nii/,Nii);
for ii=:Nii/
p1(ii,:)=circshift(p1_0',2*(ii-1)+1-(L-1)+L/2-1)';
p2(ii,:)=circshift(p2_0',2*(ii-1)+1-(L-1)+L/2-1)';
end
w1=[p1;p2];
mm=^loop_max-length(w1);
w=[w1,zeros(length(w1),mm);zeros(mm,length(w1)),eye(mm,mm)];
ww=ww*w;
clear p1;clear p2;
end %The end!!!
end

验证是否与Matlab自带的函数wavedec所得结果一致:

%验证函数dwtmtx的正确性
clear all;close all;clc;
N = ^;
% 'db1' or 'haar', 'db2', ... ,'db10', ... , 'db45'
% 'coif1', ... , 'coif5'
% 'sym2', ... , 'sym8', ... ,'sym45'
% 'bior1.1', 'bior1.3', 'bior1.5'
% 'bior2.2', 'bior2.4', 'bior2.6', 'bior2.8'
% 'bior3.1', 'bior3.3', 'bior3.5', 'bior3.7'
% 'bior3.9', 'bior4.4', 'bior5.5', 'bior6.8'
% 'rbio1.1', 'rbio1.3', 'rbio1.5'
% 'rbio2.2', 'rbio2.4', 'rbio2.6', 'rbio2.8'
% 'rbio3.1', 'rbio3.3', 'rbio3.5', 'rbio3.7'
% 'rbio3.9', 'rbio4.4', 'rbio5.5', 'rbio6.8'
wtype = 'rbio6.8';
wlev_max = wmaxlev(N,wtype);
if wlev_max ==
fprintf('\nThe parameter N and wtype does not match!\n');
end
dwtmode('per');
for wlev = :wlev_max
ww = dwtmtx(N,wtype,wlev);
x = randn(,N);
y1 = (ww*x')';
[y2,y2l] = wavedec(x,wlev,wtype);
y_err = sum((y1-y2).*(y1-y2));
fprintf('wlev = %d: y_err = %f\n',wlev,y_err);
end

浅谈压缩感知(十四):傅里叶矩阵与小波变换矩阵的MATLAB实现的更多相关文章

  1. 浅谈压缩感知(七):常见测量矩阵的MATLAB实现

    1.随机高斯测量矩阵 function [ Phi ] = GaussMtx( M,N ) %GaussMtx Summary of this function goes here % Generat ...

  2. 浅谈压缩感知(二十四):压缩感知重构算法之子空间追踪(SP)

    主要内容: SP的算法流程 SP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 SP与CoSaMP的性能比较 一.SP的算法流程 压缩采样匹配追踪(CoSaMP)与子 ...

  3. 浅谈压缩感知(二十):OMP与压缩感知

    主要内容: OMP在稀疏分解与压缩感知中的异同 压缩感知通过OMP重构信号的唯一性 一.OMP在稀疏分解与压缩感知中的异同 .稀疏分解要解决的问题是在冗余字典(超完备字典)A中选出k列,用这k列的线性 ...

  4. 浅谈压缩感知(二十一):压缩感知重构算法之正交匹配追踪(OMP)

    主要内容: OMP的算法流程 OMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.OMP的算法流程 二.OMP的MATL ...

  5. 浅谈压缩感知(十六):感知矩阵之RIP

    在压缩感知中,总是看到"矩阵满足RIP"之类的字眼,没错,这是一个压缩感知绕不开的术语,有限等距性质(Restricted Isometry Property, RIP). 注意: ...

  6. 浅谈压缩感知(十五):感知矩阵之spark常数

    在压缩感知中,有一些用来评价感知矩阵(非测量矩阵)的指标,如常见的RIP等,除了RIP之外,spark常数也能够用来衡量能否成为合适的感知矩阵. 0.相关概念与符号 1.零空间条件NULL Space ...

  7. 浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP)

    主要内容: gOMP的算法流程 gOMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.gOMP的算法流程 广义正交匹配追踪(Generalized OMP, g ...

  8. 浅谈压缩感知(二十六):压缩感知重构算法之分段弱正交匹配追踪(SWOMP)

    主要内容: SWOMP的算法流程 SWOMP的MATLAB实现 一维信号的实验与结果 门限参数a.测量数M与重构成功概率关系的实验与结果 SWOMP与StOMP性能比较 一.SWOMP的算法流程 分段 ...

  9. 浅谈压缩感知(二十五):压缩感知重构算法之分段正交匹配追踪(StOMP)

    主要内容: StOMP的算法流程 StOMP的MATLAB实现 一维信号的实验与结果 门限参数Ts.测量数M与重构成功概率关系的实验与结果 一.StOMP的算法流程 分段正交匹配追踪(Stagewis ...

随机推荐

  1. 图解tensorflow 源码分析

    http://www.cnblogs.com/yao62995/p/5773578.html https://github.com/yao62995/tensorflow

  2. vue首屏加载优化

    库使用情况 vue vue-router axios muse-ui material-icons vue-baidu-map 未优化前 首先我们在正常情况下build 优化 1. 按需加载 当前流行 ...

  3. 使用cat读取和echo写内核文件节点的一些问题

    span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }.CodeMirror ...

  4. VC 中 编译 boost 1.34.1 或者 1.34.0

    c++boost正则表达式的安装方法 (cy163已成功完成实验 基于宽字节 wstring 解决 "南日" 错误 匹配"12日" expression = & ...

  5. lodash用法系列(5),链式

    Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能. 官网:https://lodash.com/引用:<script src="//cdnjs.clou ...

  6. Java 反射机制(包括组成、结构、示例说明等内容)

    第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”.这里“类的部分已经的信息”,可以是“类名”或“类的对象” ...

  7. ZooKeeper_客户端工具zkCli.sh使用

    #一.命令 [root@VM_31_182_centos bin]# ./zkCli.sh -server 127.0.0.1:2181   #二.帮助命令 help #三.创建.修改.删除.退出de ...

  8. SQL:显示每天的小计,某一天没有记录也要显示

    对于这种需求,我们需要一个主表存储连续的日期,然后使用 left join 即可. declare @Daily table ( 日期 date ) declare @start date = '20 ...

  9. 猫都能学会的Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  10. 实习医生格蕾第十三季/全集Grey’s Anatomy迅雷下载

    英文全名Grey's Anatomy,第13季(2016)ABC.本季看点:<实习医生格蕾>(Grey’s Anatomy)上季终集里,又一名资深演员离开了——Sara Ramirez扮演 ...