?? dddd.txt
字號(hào):
% 此程序?qū)崿F(xiàn)構(gòu)造小波基
% periodic_wavelet.m function ss=periodic_wavelet; clear;clc; % global MOMENT; % 消失矩階數(shù)
% global LEFT_SCALET; % 尺度函數(shù)左支撐區(qū)間
% global RIGHT_SCALET; % 尺度函數(shù)右支撐區(qū)間
% global LEFT_BASIS; % 小波基函數(shù)左支撐區(qū)間
% global RIGHT_BASIS; % 小波基函數(shù)右支撐區(qū)間
% global MIN_STEP; % 最小離散步長(zhǎng)
% global LEVEL; % 計(jì)算需要的層數(shù)(離散精度)
% global MAX_LEVEL; % 周期小波最大計(jì)算層數(shù)
[s2,h]=scale_integer;
[test,h]=scalet_stretch(s2,h);
wave_base=wavelet(test,h);
ss=periodic_waveletbasis(wave_base);
function [s2,h]=scale_integer; % 本函數(shù)實(shí)現(xiàn)求解小波尺度函數(shù)離散整數(shù)點(diǎn)的值
% sacle_integer.m MOMENT=10; % 消失矩階數(shù)
LEFT_SCALET=0; % 尺度函數(shù)左支撐區(qū)間
RIGHT_SCALET=2*MOMENT-1; % 尺度函數(shù)右支撐區(qū)間
LEFT_BASIS=1-MOMENT; % 小波基函數(shù)左支撐區(qū)間
RIGHT_BASIS=MOMENT; % 小波基函數(shù)右支撐區(qū)間
MIN_STEP=1/512; % 最小離散步長(zhǎng)
LEVEL=-log2(MIN_STEP); % 計(jì)算需要的層數(shù)(離散精度)
MAX_LEVEL=8; % 周期小波最大計(jì)算層數(shù)
h=wfilters('db10','r'); % 濾波器系數(shù) h=h*sqrt(2); % FI(T)=SQRT(2)*SUM(H(N)*FI(2T-N)) N=0:2*MOMENT-1; for i=LEFT_SCALET+1:RIGHT_SCALET-1
for j=LEFT_SCALET+1:RIGHT_SCALET-1
k=2*i-j+1;
if (k>=1&k<=RIGHT_SCALET+1)
a(i,j)=h(k); % 矩陣系數(shù)矩陣
else
a(i,j)=0;
end
end
end [s,w]=eig(a); % 求特征向量,解的基
s1=s(:,1);
s2=[0;s1/sum(s1);0]; % 根據(jù)條件SUM(FI(T))=1,求解; % 本函數(shù)實(shí)現(xiàn)尺度函數(shù)經(jīng)伸縮后的離散值
% scalet_stretch.m function [s2,h]=scalet_stretch(s2,h); MOMENT=10; % 消失矩階數(shù)
LEFT_SCALET=0; % 尺度函數(shù)左支撐區(qū)間
RIGHT_SCALET=2*MOMENT-1; % 尺度函數(shù)右支撐區(qū)間
LEFT_BASIS=1-MOMENT; % 小波基函數(shù)左支撐區(qū)間
RIGHT_BASIS=MOMENT; % 小波基函數(shù)右支撐區(qū)間
MIN_STEP=1/512; % 最小離散步長(zhǎng)
LEVEL=-log2(MIN_STEP); % 計(jì)算需要的層數(shù)(離散精度)
MAX_LEVEL=8; % 周期小波最大計(jì)算層數(shù)
for j=1:LEVEL % 需要計(jì)算到尺度函數(shù)的層數(shù)
t=0;
for i=1:2:2*length(s2)-3 % 需要計(jì)算的離散點(diǎn)取值(0,1,2,3 -> 1/2, 3/2, 5/2)
t=t+1;
fi(t)=0;
for n=LEFT_SCALET:RIGHT_SCALET; % 低通濾波器沖擊響應(yīng)緊支撐判斷
if ((i/2^(j-1)-n)>=LEFT_SCALET&(i/2^(j-1)-n)<=RIGHT_SCALET) % 小波尺度函數(shù)緊支撐判斷
fi(t)=fi(t)+h(n+1)*s2(i-n*2^(j-1)+1); % 反復(fù)應(yīng)用雙尺度方程求解
end
end
end
clear s
n1=length(s2);
n2=length(fi);
for i=1:length(s2)+length(fi) % 變換后的矩陣長(zhǎng)度
if (mod(i,2)==1)
s(i)=s2((i+1)/2); % 矩陣奇數(shù)下標(biāo)為小波上一層(0,1,2,3)離散值
else
s(i)=fi(i/2); % 矩陣偶數(shù)下標(biāo)為小波下一層(1/2,3/2,5/2)(經(jīng)過(guò)伸縮變換后)的離散值
end
end
s2=s;
end
% 采用雙尺度方程求解小波基函數(shù) PSI(T)
% wavelet.m function wave_base=wavelet(test,h); MOMENT=10; % 消失矩階數(shù)
LEFT_SCALET=0; % 尺度函數(shù)左支撐區(qū)間
RIGHT_SCALET=2*MOMENT-1; % 尺度函數(shù)右支撐區(qū)間
LEFT_BASIS=1-MOMENT; % 小波基函數(shù)左支撐區(qū)間
RIGHT_BASIS=MOMENT; % 小波基函數(shù)右支撐區(qū)間
MIN_STEP=1/512; % 最小離散步長(zhǎng)
LEVEL=-log2(MIN_STEP); % 計(jì)算需要的層數(shù)(離散精度)
MAX_LEVEL=8; % 周期小波最大計(jì)算層數(shù)
i=0;
for t=LEFT_BASIS:MIN_STEP:RIGHT_BASIS; % 小波基支撐長(zhǎng)度
s=0;
for n=1-RIGHT_SCALET:1-LEFT_SCALET % g(n)取值范圍
if((2*t-n)>=LEFT_SCALET&(2*t-n)<=RIGHT_SCALET) % 尺度函數(shù)判斷
s=s+h(1-n+1)*(-1)^(n)*test((2*t-n)/MIN_STEP+1); % 計(jì)算任意精度的小波基函數(shù)值
end
end
i=i+1;
wave_base(i)=s;
end
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -