?? matlab_wavelet.txt
字號:
第 9 樓發表于 2006-4-2 09:40 資料 文集 短消息
請問能不能指教一下二次樣條小波呢?matlab里面如何實現呢?
snowwa
應門書童
精華: 0
積分: 2
帖子: 13
威望: 1 點
振動幣: 682 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 10
注冊: 2006-3-7
第 10 樓發表于 2006-4-4 00:56 資料 文集 短消息
thanks, !!!!!!!!!!!!!!!!!!!!!!!1
simon21
新科狀元
精華: 6
積分: 400
帖子: 670
威望: 321 點
振動幣: 23552 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 80
注冊: 2005-7-24
第 11 樓發表于 2006-4-6 14:26 資料 個人空間 短消息
回復:(simon21)[分享]個人收集的一些關于小波分析的...
基于LeventCodes平臺的小波去噪程序
包括以下方法:
BivaShrink方法、模型1、模型2、模型3(TrivaShrink方法)、
BayesShrink方法、 LAWMLShrink方法的DWT實現和DT_CWT實現。
simon21
新科狀元
精華: 6
積分: 400
帖子: 670
威望: 321 點
振動幣: 23552 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 80
注冊: 2005-7-24
第 12 樓發表于 2006-4-6 14:30 資料 個人空間 短消息
回復:(simon21)[分享]個人收集的一些關于小波分析的...
連續小波和離散小波分析的應用實例
simon21
新科狀元
精華: 6
積分: 400
帖子: 670
威望: 321 點
振動幣: 23552 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 80
注冊: 2005-7-24
第 13 樓發表于 2006-4-6 14:31 資料 個人空間 短消息
回復:(simon21)[分享]個人收集的一些關于小波分析的...
小波插值與小波構造(3個程序) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 小波構造 function casade
clear;clc;
t=3;
phi=[0,1,0]; h=wfilters('db7','r');
h=h*sqrt(2); h_e=h(1,[2:2:14]);
h_o=h(1,[1:2:13]); for m=1:15;
stem(phi);
drawnow;
pause(1);
ee=conv(h_e,phi);
oo=conv(h_o,phi);
phi(1,[2:2:2*length(ee)])=ee;
phi(1,[1:2:2*length(oo)-1])=oo;
end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% cubic_average(立方b樣條)
% 均值插值 % 初始化
s=[0 0 1 0 0] % 正弦波
% f=50;
% ts=1/200;
% n=0:16;
% s=sin(2*pi*f*n*ts); % 系數
se=[1/8,6/8,1/8];
so=[4/8,4/8] % 循環
for p=1:10;
t=length(s)-1;
o(1:t)=s(1:t)*so(1)+s(2:t+1)*so(2);
e(1)=s(t+1)*se(1)+s(1)*se(2)+s(2)*se(3);
e(2:t)=s(1:t-1)*se(1)+s(2:t)*se(2)+s(3:t+1)*se(3);
e(t+1)=s(t)*se(1)+s(t+1)*se(2)+s(1)*se(3);
s([1:2:2*t+1])=e([1:t+1]);
s([2:2:2*t])=o([1:t]);
plot(s);
drawnow;
end; % 抽取
t=length(s); % 總長度
p=128; % 需要點數 % 間隔
d=(t-1)/p; % 最終尺度函數
r=s(2:d:t-1); % 畫圖
figure(2);
plot(r);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% cubic_subdivision(立方插值)
% 細分插值 % %% 初始化(尺度函數)
% s=[0,0,1,0,0]; % 正弦函數
n=1:20;
f=50;
ts=1/200;
s=sin(2*pi*f*n*ts); % 指數函數
% n=0:16;
% s=exp(n); % % 系數
a=[-1/16,9/16,9/16,-1/16]; % 循環
for p=1:4;
t=length(s)-1;
o(1)=s(4)*a(1)+s(1)*a(2)+s(2)*a(3)+s(3)*a(4);
o(2:t-1)=s(1:t-2)*a(1)+s(2:t-1)*a(2)+s(3:t)*a(3)+s(4:t+1)*a(4);
o(t)=s(t-2)*a(4)+s(t+1)*a(3)+s(t)*a(2)+s(t-1)*a(1);
s([1:2:2*t+1])=s([1:t+1]);
s([2:2:2*t])=o([1:t]);
plot(s);
drawnow;
end; % % 抽取
% t=length(s); % 總長度
% p=128; % 需要點數
%
% % 間隔
% d=(t-1)/p;
%
% % 最終尺度函數
% r=s(2:d:t-1);
%
% % 畫圖
% figure(2);
% plot(r);
simon21
新科狀元
精華: 6
積分: 400
帖子: 670
威望: 321 點
振動幣: 23552 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 80
注冊: 2005-7-24
第 14 樓發表于 2006-4-6 14:33 資料 個人空間 短消息
回復:(simon21)[分享]個人收集的一些關于小波分析的...
采用多孔trous算法(undecimated wavelet transform)實現小波變換 clear;clc;
% 1.生成信號
f=50; % 頻率
fs=800; % 采樣率
T=128; % 信號長度
n=1:T;
y=sin(2*pi*f*n/fs)+2*exp(-f*n/(4*fs)); % 信號
% y=circshift(y.',3).'; %%
2.正變換 l1=wfilters('db4','l')*sqrt(2)/2;
% 參考低通濾波器
l1_zeros=[l1,zeros(1,T-length(l1))]; % 低通濾波器1
h1=wfilters('db4','h')*sqrt(2)/2; % 參考高通濾波器
h1_zeros=[h1,zeros(1,T-length(h1))]; % 高通濾波器1 low1=ifft(fft(y).*fft(l1_zeros)); % 低頻分量1
high1=ifft(fft(y).*fft(h1_zeros)); % 高頻分量1 l2=dyadup(l1); % 原濾波器插值
l2_zeros=[l2,zeros(1,T-length(l2))]; % 低通濾波器2
h2=dyadup(h1); % 原濾波器插值
h2_zeros=[h2,zeros(1,T-length(h2))]; % 高通濾波器2 low2=ifft(fft(low1).*fft(l2_zeros)); % 低頻分量2
high2=ifft(fft(low1).*fft(h2_zeros)); % 高頻分量2
%% 3.反變換 lr2=circshift(l2_zeros(end:-1:1).',1).'; % 重構低通濾波器2
hr2=circshift(h2_zeros(end:-1:1).',1).'; % 重構高通濾波器2
lr1=circshift(l1_zeros(end:-1:1).',1).'; % 重構低通濾波器1
hr1=circshift(h1_zeros(end:-1:1).',1).'; % 重構高通濾波器1 lowr=(ifft(fft(low2).*fft(lr2))+ifft(fft(high2).*fft(hr2))); % 重構低頻分量1(lowr=low1)
r_s=(ifft(fft(lowr).*fft(lr1))+ifft(fft(high1).*fft(hr1))); % 重構源信號(r_s=y)
%% 4.繪圖 figure(1);
plot(y);
title('源信號'); figure(2);
plot(low1,'r');
hold on;
plot(low2,'b');
legend('第一層低頻','第二層低頻'); figure(3);
plot(high1,'r');
hold on;
plot(high2,'b');
legend('第一層高頻','第二層高頻'); figure(4);
plot(low1,'r');
hold on;
plot(lowr,'b.');
legend('第一層低頻','重構第一層低頻'); figure(5);
plot(y,'r');
hold on;
plot(r_s,'b.');
legend('源信號','重構信號'); disp(norm(low1-lowr))
disp(norm(y-r_s))
simon21
新科狀元
精華: 6
積分: 400
帖子: 670
威望: 321 點
振動幣: 23552 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 80
注冊: 2005-7-24
第 15 樓發表于 2006-4-6 14:35 資料 個人空間 短消息
回復:(simon21)[分享]個人收集的一些關于小波分析的...
% 此程序實現構造小波基
% periodic_wavelet.m function ss=periodic_wavelet; clear;clc;
% global MOMENT; % 消失矩階數
% global LEFT_SCALET; % 尺度函數左支撐區間
% global RIGHT_SCALET; % 尺度函數右支撐區間
% global LEFT_BASIS; % 小波基函數左支撐區間
% global RIGHT_BASIS; % 小波基函數右支撐區間
% global MIN_STEP; % 最小離散步長
% global LEVEL; % 計算需要的層數(離散精度)
% global MAX_LEVEL; % 周期小波最大計算層數
[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; % 本函數實現求解小波尺度函數離散整數點的值
% sacle_integer.m MOMENT=10; % 消失矩階數
LEFT_SCALET=0; % 尺度函數左支撐區間
RIGHT_SCALET=2*MOMENT-1; % 尺度函數右支撐區間
LEFT_BASIS=1-MOMENT; % 小波基函數左支撐區間
RIGHT_BASIS=MOMENT; % 小波基函數右支撐區間
MIN_STEP=1/512; % 最小離散步長
LEVEL=-log2(MIN_STEP); % 計算需要的層數(離散精度)
MAX_LEVEL=8; % 周期小波最大計算層數
h=wfilters('db10','r'); % 濾波器系數 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); % 矩陣系數矩陣
else
a(i,j)=0;
end
end
end [s,w]=eig(a); % 求特征向量,解的基
s1=s(:,1);
s2=[0;s1/sum(s1);0]; % 根據條件SUM(FI(T))=1,求解; % 本函數實現尺度函數經伸縮后的離散值
% scalet_stretch.m function [s2,h]=scalet_stretch(s2,h); MOMENT=10; % 消失矩階數
LEFT_SCALET=0; % 尺度函數左支撐區間
RIGHT_SCALET=2*MOMENT-1; % 尺度函數右支撐區間
LEFT_BASIS=1-MOMENT; % 小波基函數左支撐區間
RIGHT_BASIS=MOMENT; % 小波基函數右支撐區間
MIN_STEP=1/512; % 最小離散步長
LEVEL=-log2(MIN_STEP); % 計算需要的層數(離散精度)
MAX_LEVEL=8; % 周期小波最大計算層數
for j=1:LEVEL % 需要計算到尺度函數的層數
t=0;
for i=1:2:2*length(s2)-3 % 需要計算的離散點取值(0,1,2,3 -> 1/2, 3/2, 5/2)
t=t+1;
fi(t)=0;
for n=LEFT_SCALET:RIGHT_SCALET; % 低通濾波器沖擊響應緊支撐判斷
if ((i/2^(j-1)-n)>=LEFT_SCALET&(i/2^(j-1)-n)<=RIGHT_SCALET) % 小波尺度函數緊支撐判斷
fi(t)=fi(t)+h(n+1)*s2(i-n*2^(j-1)+1); % 反復應用雙尺度方程求解
end
end
end
clear s
n1=length(s2);
n2=length(fi);
for i=1:length(s2)+length(fi) % 變換后的矩陣長度
if (mod(i,2)==1)
s(i)=s2((i+1)/2); % 矩陣奇數下標為小波上一層(0,1,2,3)離散值
else
s(i)=fi(i/2); % 矩陣偶數下標為小波下一層(1/2,3/2,5/2)(經過伸縮變換后)的離散值
end
end
s2=s;
end
% 采用雙尺度方程求解小波基函數 PSI(T)
% wavelet.m function wave_base=wavelet(test,h); MOMENT=10; % 消失矩階數
LEFT_SCALET=0; % 尺度函數左支撐區間
RIGHT_SCALET=2*MOMENT-1; % 尺度函數右支撐區間
LEFT_BASIS=1-MOMENT; % 小波基函數左支撐區間
RIGHT_BASIS=MOMENT; % 小波基函數右支撐區間
MIN_STEP=1/512; % 最小離散步長
LEVEL=-log2(MIN_STEP); % 計算需要的層數(離散精度)
MAX_LEVEL=8; % 周期小波最大計算層數
i=0;
for t=LEFT_BASIS:MIN_STEP:RIGHT_BASIS; % 小波基支撐長度
s=0;
for n=1-RIGHT_SCALET:1-LEFT_SCALET % g(n)取值范圍
if((2*t-n)>=LEFT_SCALET&(2*t-n)<=RIGHT_SCALET) % 尺度函數判斷
s=s+h(1-n+1)*(-1)^(n)*test((2*t-n)/MIN_STEP+1); % 計算任意精度的小波基函數值
end
end
i=i+1;
wave_base(i)=s;
end
53 1/4 1234?? 投票
交易
懸賞
活動
振動論壇
家園建設
> 論壇公告
> 論壇建設
> 版面建設、版主申請
> 專家講壇
> 專家講壇資料
> 新手上路
> 新人送積分活動
振動基礎
> 基礎力學理論
> 一般力學和振動理論
> 數學與非線性科學
> 算法原理及編程
> 結構可靠性及優化設計
> 控制理論及應用
> NVH及振動利用工程
CFD專區
> CFD基礎理論與實踐
> Fluent討論區
> 其他CFD軟件討論區
信號處理
> 振動實驗與測試技術
> 信號處理方法
> 故障診斷及健康監測
噪聲分析
> 聲學基礎及噪聲治理
> 聲學分析軟件
> 聲學測量
數學軟件
> Matlab討論區
> Simulink仿真專區
> 虛擬儀器技術
> 其他數學軟件
工程軟件
> Ansys討論區
> MSC系列軟件專區
> ABAQUS討論區
> CAD軟件討論區
> 其他軟件及相關討論
綜合討論
> 電腦安全維護
> 科學研究方法
> 信息廣場
休閑娛樂
> 心情故事
> 圖行天下
管理專區
當前時區 GMT+8, 現在時間是 2007-3-31 16:02
黑ICP備06005726號
Powered by Discuz! 5.0.0 ? 2001-2006 Comsenz Inc.
Processed in 0.168516 second(s), 9 queries , Gzip enabled TOP
清除 Cookies - 聯系我們 - 中國振動聯盟 - Archiver - WAP
社區銀行
論壇勛章
虛擬股市
寵物中心
宣傳中心
人氣排行
游客: 注冊 | 登錄 | 會員 | 搜索 | 論壇設施 | 幫助
振動論壇 ? 信號處理方法 ? [分享]個人收集的一些關于小波分析的matlab程序
?? 上一主題 | 下一主題 ??
53 2/4 ??1234?? 投票
交易
懸賞
活動
打印 | 推薦 | 訂閱 | 收藏 | 開通個人空間 | 加入資訊 標題: [分享]個人收集的一些關于小波分析的matlab程序
本主題由 yangzj 于 2007-1-20 20:40 設置高亮
WaveletFan
應門書童
精華: 0
積分: 1
帖子: 3
威望: 1 點
振動幣: 214 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 10
注冊: 2006-4-12
第 16 樓發表于 2006-4-12 14:24 資料 文集 短消息
謝謝分享
ijkl56
應門書童
精華: 0
積分: 4
帖子: 18
威望: 2 點
振動幣: 1848 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 10
注冊: 2006-3-17
第 17 樓發表于 2006-4-23 18:52 資料 文集 短消息
辛苦了!
infant
應門書童
精華: 0
積分: 1
帖子: 3
威望: 1 點
振動幣: 151 個
管理積分: 0 點
人氣指數: 0
閱讀權限: 10
注冊: 2006-4-26
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -