📄 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 + -