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

📄 wavefilter.m

📁 jpeg在matlab下的仿真实现
💻 M
字号:
function [varargout] = wavefilter(wname, type)
error(nargchk(1, 2,nargin));
if (nargin == 1 & nargout ~=4) | (nargin == 2 & nargout ~= 2)
    error('Invaled number of output arguments.');
end
if nargin == 1 & ~ischar(wname)
    error('WNAME must be a string.');
end
if nargin == 2 & ~ischar(type)
    error('TYPE must be a string.');
end
switch lower(wname)
    case {'haar', 'dbl'}
        ld = [1 1] / sqrt(2);    hd = [-1 1] / sqrt(2);
        lr = ld;                 hr = -hd;
    case 'db4'
        ld = [-1.059740178499728e-002 3.288301166698295e-002 ...
              3.084138183598697e-002 -1.870348117188811e-001 ...
              -2.798376941698385e-002 6.308807679295904e-001 ...
              7.148465705525415e-001 2.303778133088552e-001];
        t = (0:7);
        hd = ld;   hd(end:-1:1) = cos(pi * t) .* ld;
        lr = ld;    lr(end:-1:1) = ld;
        hr = cos(pi * t) .* ld;
    case 'sym4'
        ld = [-7.576571478927333e-002 -2.963552764599851e-002 ...
              4.976186676320155e-001 8.037387518059161e-001 ...
              2.978577956052774e-001 -9.921954357684722e-002 ...
              -1.2603967203783e-002 8.222310060404270e-002];
        t = (0:7);
        hd = ld;   hd(end:-1:1) = cos(pi * t) .* ld;
        lr = ld;    lr(end:-1:1) = ld;
        hr = cos(pi * t) .* ld;
    case 'bior6.8'
        ld = [0 1.908831736481291e-003 -1.914386129088767e-003 ...
              -1.699063876760234e-002 1.193456527972926e-002 ...
              4.973290349094079e-002 -7.726317316720414e-002 ...
              -9.405920349573646e-002 4.207962846098268e-001 ...
              8.259229974584023e-001 4.207962846098268e-001 ...
              -9.40592349573646e-002 -7.726317316720414e-002 ...
              4.973290349094079e-002 1.193456527972926e-002 ...
              -1.699063986760234e-002 -1.914286129088767e-003 ...
              1.908831736481291e-003];
        hd = [0 0 0 1.442628250562444e-002 -1.446750489679015e-002 ...
              -7.872200106262882e-002 4.036797903033992e-002 ...
              4.178491091502746e-001 -7.589077294536542e-001 ...
              4.178491091502746e-001 4.036797903033992e-002 ...
              -7.872200106262882e-002 -1.446750489679015e-002 ...
              1.442628250562444e-002 0 0 0 ];
        t = (0:17);
        lr = cos(pi * (t + 1)) .*hd;
        hr = cos(pi * t) .*ld;
    case 'jpeg9.7'
      ld = [0 0.02674875741080976 -0.01686411844287495 ...
            -0.17822326652898785 0.2668641184428723 ...
            0.6029490182362579 0.2668641184428723 ...
            -0.17822326652898785 -0.01686411844287495 ...
            0.02674875741080976];
      hd = [0 -0.9127176311424948 0.05754352622849957 ...
            0.5912717631142470 -1.115087052456994 ...
            0.5912717631142470 0.05754352622849957 ...
            -0.9127176311424948 0 0];
      t = (0:9);
      lr = cos(pi * (t + 1)) .*hd;
      hr = cos(pi * t) .*ld;
  otherwise
      error('Unrecognizable wavelet name (WNAME).');
end
if (nargin == 1)
    varargout(1:4) = {ld, hd, lr, hr};
else
    switch lower(type(1))
        case 'd'
            varargout = {ld, hd};
        case 'r'
            varargout = {lr, hr};
        otherwise
            error('Unrecognizable filter TYPE.');
    end    
end

⌨️ 快捷键说明

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