滤波器算法(2)-最小均方(LMS)

2018.09.09 写的版本

 ①残差平方和

 

②平方损失函数:

③函数的极值点为偏导数为0的点:(将问题变成一个求极值的问题)

④求解得:

 

 matlab代码:

① y=ax+b+e方程

1 function [y] = form_y_ax_b(a,b,x)
2 %FORM_Y_AX_B 此处显示有关此函数的摘要
3 %   此处显示详细说明
4 
5 y=x.*a+b;
6 
7 end

 

② 专用型最小二求解函数

 1 %% 单单针对 y=ax+b+e类型的最小二乘法
 2 
 3 function [a,b] = func_lms1(x,y)
 4 %FUNC_LMS1 此处显示有关此函数的摘要
 5 %   此处显示详细说明
 6 sx=sum(x);
 7 sy=sum(y);
 8 sxx=sum(x.*x);
 9 sxy=sum(x.*y);
10 N=length(x);
11 
12 a=(N*sxy-sx*sy)./(N*sxx-sx.^2);
13 b=(sxx*sy-sxy*sx)./(N*sxx-sx.^2);
14 
15 end

 

③ main函数

 1 %% 最小二乘法的仿真实验
 2 % clc;
 3 close all;clear;
 4 
 5 %% y=a*x+b为原始函数 +e噪声数据
 6 a=2;    % 斜率
 7 b=1;    % 截距
 8 e=1;    % 误差系数
 9 
10 x=1:0.1:10;
11 y=form_y_ax_b(a,b,x);
12 y_noise=y+randn(1,length(x)).*e;
13 
14 %% 正式处理
15 [e_a,e_b]=func_lms1(x,y_noise);
16 y_estimate=form_y_ax_b(e_a,e_b,x);
17 
18 %% 绘图
19 figure(1);
20 plot(x,y,'r-'),hold on;        
21 plot(x,y_noise,'b-*'),hold on;
22 plot(x,y_estimate,'Color',[0 0 0],'LineStyle','-.'),hold on;
23 xlabel('坐标轴x');
24 ylabel('坐标轴y');
25 legend('真实数据','加噪数据','估计数据');
26 set(gca,'FontSize',20);
27 % print -djpeg -r600 示意图;

 

④ 图谱显示

 

参考链接:

链接:https://pan.baidu.com/s/1-qPixSd4vKuWW1x120eWhw
提取码:ou07

 

posted on 2019-12-10 15:00  周健康  阅读(1223)  评论(0编辑  收藏  举报

导航