声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 科学计算 matlab 查看内容

简单的回波对消程序(LMS)

2016-5-10 08:58| 发布者: Agoni| 查看: 1306| 评论: 0|原作者: 不详|来自: 新浪hahaer的博客

摘要: 条件:不考虑近端干扰,不设双端检测器,自适应算法(LMS) %% 回波对消简单的仿真实例 % 仿真语音对消 % 不考虑近端干扰 % 不设双端检测器 % 采用LMS算法 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
  1. 条件:不考虑近端干扰,不设双端检测器,自适应算法(LMS)
  2. %% 回波对消  简单的仿真实例
  3. % 仿真语音对消
  4. % 不考虑近端干扰
  5. % 不设双端检测器
  6. % 采用LMS算法
  7. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  8. clc
  9. clear all
  10. close all

  11. Fs = 1000;
  12. t = 0:1/Fs:2;
  13. fc = 10;
  14. x = sin(2*pi*fc*t);                 % 以sin信号作为远端信号
  15. h = [0.3 0.5 0.3];                  % 回波干扰冲激响应
  16. y = filter(h,1,x);                  % 回波
  17. y = awgn(y,30,'measured');          % 加噪声

  18. M = 21;
  19. mu = 0.04;
  20. len = length(x);             % 信号的长度
  21. output = zeros(1, len);      % LMS滤波器的输出

  22. wn = zeros(M, len);          % 初始化权向量wn
  23. ref = zeros(M, 1);

  24. for n = 1:len-1
  25.   
  26.     if n < M
  27.         ref = [y(n:-1:1), zeros(1, M - n)].';
  28.     else
  29.         ref = y(n:-1:n - M + 1).';
  30.     end
  31.     output(n) = x(n) - wn(:, n)' * ref;
  32.     wn(:,n+1) = wn(:,n) + mu*ref*conj(output(n));
  33. end
  34. ref = y(len:-1:len-M+1).';
  35. output(len) = x(len) - wn(:, len)' * ref;
  36. plot(abs(output))
复制代码
转自:http://blog.sina.com.cn/s/blog_5def5a660100u2hn.html

最新评论

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

GMT+8, 2024-4-20 17:06 , Processed in 0.041525 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部