matlab blms算法程序,LMS算法Matlab程序

LMS滤波器MATLAB函数

function [yn,W,en]=LMSPrediction(xn,M,mu,k) % LMS(Least Mean Squre)算法 % 输入参数:

% xn 输入的信号序列 (列向量)

% M 滤波器的阶数 抽头数 (标量)

% mu 收敛因子(步长) (标量) 要求大于0,小于xn的相关矩阵最大特征值的倒数

% k 预测阶数 (标量) % 输出参数:

% W 滤波器的权值矩阵 (矩阵) % 大小为M x itr,

% en 误差序列(itr x 1) (列向量)

% yn 实际输出序列 (列向量) % 参数个数必须为4个或5个

itr = length(xn); % 4个时递归迭代的次数为xn的长度 % 初始化参数

en = zeros(itr,1); % 误差序列,en(k)表示第k次迭代时预期输出与实际输入的误差

W = zeros(M,itr); % 每一行代表一个加权参量,每一列代表-次迭代,初始为0 % 迭代计算

yn = zeros(size(xn)+k,1);

for n = (M+k):itr % 第n次迭代

xn_k = (-1)*xn((n-k):-1:(n-k-M+1));%-x(n-k) -x(n-k-1).... -x(n-k-M+1) en(n) = xn(n) - W(:,n-1).' * xn_k; % 第n次迭代的误差 % 滤波器权值计算的迭代式

W(:,n) = W(:,n-1) + mu*en(n)*xn_k;

x = (-1)*xn(n:-1:n-M+1); % 滤波器M个抽头的输入 x= -x(n) -x(n-1) ....-x(n-m+1)

yn(n+k) = W(:,n).' * x; % 滤波器的预测输出 end

LMS算法试用程序

%function main() clear; clc;

% 信号的产生

load 'E:\\skeleton\\角度计算数据\\角度计算数据\\leftknee8p36m.mat';

Fs = 120; % Sampling frequency T = 1/Fs; % Sample time xs=beta;

xs(159:160)=xs(159:160) + 50;

L = length(xs); % Length of signal t = (0:L-1)*T; % Time vector % 信号滤波

xn = xs.' ; % 输入信号序列 列向量 dn = xn ; % 预期结果序列 列向量 M = 20 ; % 滤波器的阶数 k = 0; %预测阶数

mu = 0.000009; % 收敛因子 0 < mu < 2 0.0002 [yn,W,en] = LMSPrediction(xn,M,mu,k);

[MAXet,RMSet,MAEet,PR,STS] = AccuaryCalculate(xn,yn(1:L),M,k); % 绘制自适应滤波器输出信号,预期输出信号和两者的误差 figure

plot(t,yn(k+1:end),'-r',t,dn,'-b');grid;

legend('LMS滤波输出yn','原始信号xn'); ylabel('幅值'); xlabel('时间');

title('na=20 k=1 u=0.000009 STS=0.0789 PR=88.88%');

运行结果

自适应滤波器40滤波输出yn原始信号--dn 302010幅值0-10-20-30 00.5时间11.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值