⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program_20_1.m

📁 这是基于MATLAB系统上开发的,应用于小波分析方面,很有用的程序模块,书名为"MATLAB在小波分析中的应用"
💻 M
字号:
%  本程序实现小波在矩阵方程求解中的应用
clear;clc;

%  构造小波矩阵
[h,g]= wfilters('db7','d');  %  分解低通和高通滤波器
N=512;               %  矩阵维数(大小为2的整数幂次)
L=length(h);         %  滤波器长度
rank_max=log2(N);    %  最大层数
rank_min=double(int8(log2(L)))+1;  %  最小层数
ww=1;   %  预处理矩阵

%  矩阵构造
for jj=rank_min:rank_max
    
    nn=2^jj;
    
    %  构造向量
    p1_0=sparse([h,zeros(1,nn-L)]);
    p2_0=sparse([g,zeros(1,nn-L)]);
    
    %  向量圆周移位
    for ii=1:nn/2
        p1(ii,:)=circshift(p1_0',2*(ii-1))';
        p2(ii,:)=circshift(p2_0',2*(ii-1))';
    end
    
    %  构造正交矩阵
    w1=[p1;p2];
    mm=2^rank_max-length(w1);
    w=sparse([w1,zeros(length(w1),mm);zeros(mm,length(w1)),eye(mm,mm)]);
    ww=ww*w;
    
    clear p1;clear p2;
end

norm(eye(N,N)-ww*ww.')
norm(eye(N,N)-ww.'*ww)
figure(1)
spy(ww)
title('小波预处理矩阵非零元素图')

%  构造测试矩阵
for i=1:N;
    for j=1:N;
        z(i,j)=1/(abs(i-j)+1);
    end
end
% z=randn(N,N);

v=eye(N,1);
result=z\v;
 
%  小波变换(稀疏矩阵乘法)
z_t=ww*sparse(z)*ww.';
v_t=ww*sparse(v);
 
%  稀疏化矩阵
threshold=3*10^(-3);
z_t=z_t.*sparse(abs(z_t)>(threshold*norm(abs(z_t),1)));  %  大于阈值的元素保留,否则置零
 
%  求解小波域矩阵方程
j_t=z_t\v_t;
 
%  反小波变换
result_app=ww.'*j_t;
 
%  相对误差
norm(result_app-result)/norm(result)
 
%  稀疏度图
figure(2)
spy(z_t)
title('矩阵经小波变换稀疏化图')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -