声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1965|回复: 7

[编程技巧] [求助]MATLAB实现小波变换LMS滤波算法

[复制链接]
发表于 2006-4-13 16:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
想用MATLAB实现小波变换LMS滤波算法,请各位高人指点。
回复
分享到:

使用道具 举报

发表于 2006-4-13 17:42 | 显示全部楼层

回复:(simon0714)[求助]MATLAB实现小波变换LMS滤波...

matlab   lms 算法实例<BR>function [wn,en]=lms(xn,dn,M,delt,varargin)<BR>% LMS Algorithm ,返回滤波器加权系数矩阵和误差向量<BR>%<BR>% 调用格式<BR>% [wn,en]=lms(xn,dn,M,delt,itr)<BR>% en=滤波器输出和d(n)的误差序列,为列向量<BR>% wn=滤波器的加权参量序列,为一矩阵,其每行代表一个加权参量,每列代表一次迭代;初始化值设为0<BR>% xn=输入列向量信号<BR>% dn=期望列向量信号<BR>% M=滤波器阶数<BR>% delt=步长<BR>% itr=迭代次数<BR>% <BR>% [wn,en]=lms(xn,dn,M,delt)<BR>% 迭代次数为默认值,即等于x(n)的点数
<P>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<BR>% 输入输出参数的检查<BR>%--------------------------------------------------------------------------<BR>vin=length(varargin); Item=vin+4; <BR>error(nargchk(4,Item,nargin)); % 检查输入变量数目是否合适,其中前四个参数必须输入<BR>if nargout&gt;2 % 检查输出变量数目是否合适<BR>error('Too many output arguments');<BR>end<BR>%------------------------------------------------------------------------<BR>Nx=length(xn); % x(n)的长度<BR>if Nx~=length(dn) % 检查x(n)和d(n)长度是否相等<BR>error('The length of x(n) is not equal to that of d(n)');<BR>end<BR>%------------------------------------------------------------------------<BR>sizex=size(xn); % 检查输入向量是否为列向量<BR>if sizex(1)&lt;sizex(2)<BR>xn=xn.';<BR>end<BR>sizedn=size(dn); % 检查期望信号向量是否为列向量<BR>if sizedn(1)&lt;sizedn(2)<BR>dn=dn.';<BR>end<BR>%-------------------------------------------------------------------------<BR>itr=Nx; % 迭代次数取默认值<BR>%-------------------------------------------------------------------------<BR>% 当输入变量为5个时<BR>if Item==5 % 确定迭代次数<BR>itr=varargin{1};<BR>if itr&gt;Nx | itr&lt;M <BR>error('Too many or too few iterations');<BR>end<BR>end<BR>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<BR>% 参数的初始化<BR>en=zeros(itr,1);<BR>wn=zeros(M,itr); % 每行代表一个加权参量,每列代表一次迭代<BR>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<BR>% 迭代计算<BR>for k=M:itr % 第k次迭代<BR>x_tap=xn(k:-1:k-M+1);<BR>en(k)=dn(k)-wn(:,k-1)'*x_tap;<BR>wn(:,k)=wn(:,k-1)+2*delt*en(k,1)*x_tap;<BR>end</P>
 楼主| 发表于 2006-4-13 19:34 | 显示全部楼层
谢谢,你的是基本的LMS程序,不知道怎么在这个基础上改为DWLMS程序。请各位高手帮帮忙!多谢!!
发表于 2006-4-14 10:58 | 显示全部楼层

回复:(simon0714)[求助]MATLAB实现小波变换LMS滤波...

不懂DWLMS,
发表于 2006-4-15 12:56 | 显示全部楼层
多谢分享! <br>
发表于 2006-5-11 16:26 | 显示全部楼层
<P>大家好啊</P>
发表于 2006-5-11 16:29 | 显示全部楼层
aspen默默无闻的落叶:<BR>     校长好啊,你会用matlab编写  图像压缩编码  的程序吗,要用小波变换的,在线等待回复阿
发表于 2006-5-11 16:35 | 显示全部楼层
有没有谁帮帮我啊?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 09:19 , Processed in 0.067396 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表