zoukankan      html  css  js  c++  java
  • 滤波器算法(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

  • 相关阅读:
    Ubuntu 14.04设置开机启动脚本的方法
    python 筛选
    分段压缩
    ubuntu 16.04 启用root用户方法
    Ubuntu 16.04 设置MySQL远程访问权限
    [分享]在ubuntu9.10下实现开机自动登录并运行自己的图形程序
    ubuntu live cd修复grub引导项
    安装dcm4chee-arc-light-5.4.1-mysql步骤
    数据库学习--wildfly配置postgreSQL数据源
    wildfly配置PostgreSQL数据源
  • 原文地址:https://www.cnblogs.com/Mufasa/p/12016705.html
Copyright © 2011-2022 走看看