声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2060|回复: 0

[编程技巧] 简单的回波对消程序(LMS)

[复制链接]
发表于 2016-5-10 08:57 | 显示全部楼层 |阅读模式

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

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

x
  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-12-28 14:24 , Processed in 0.081241 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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