使用书上的例子效果很好,但是将白噪声更换为自己录制的声音,其他处理不变的情况下去噪效果很差。原理是自己录制的噪声也是和加噪语音信号完全相关的,效果为什么这么差呢?

%

% pr7_1_1

close all;clear all; clc;

filedir=[];                             % 设置路径

filename='bluesky1.wav';                % 设置文件名

fle=[filedir filename];                 % 构成完整的路径和文件名

[s, fs, bits] = wavread(fle);           % 读入数据文件

s=s-mean(s);                            % 消除直流分量

s=s/max(abs(s));                        % 幅值归一

N=length(s);                            % 语音长度

time=(0:N-1)/fs;                        % 设置时间刻度

SNR=5;                                  % 设置信噪比

%r2=randn(size(s));                     % 产生随机噪声

r2=load('in1.dat');                     % 自己录制的噪声

r2=r2-mean(r2);                         % 消除直流分量

r2=r2/max(abs(r2));

%r2=r2/3;

r2=r2(1:32000);

a=r2(1:8000);

r2(8001:16000)=a;                       %去掉噪声中的突发噪声

b=fir1(31,0.5);                         % 设计FIR滤波器,代替H

r21=filter(b,1,r2);                     % FIR滤波

%[r1,r22]=add_noisedata(s,r21,fs,fs,SNR);% 产生带噪语音,信噪比为SNR

r1 = s+r2;

M=100;                                   % 设置M和mu

mu=0.1;

snr1=SNR_singlech(s,r1);                % 计算初始信噪比

h = adaptfilt.lms(M,mu);                % LMS滤波

[y,e] = filter(h,r2,r1);

output=e;                               % LMS滤波输出

snr2=SNR_singlech(s,output);            % 计算滤波后的信噪比

snr=snr2-snr1;

SN1=snr1; SN2=snr2; SN3=snr;

fprintf('snr1=%5.4f   snr2=%5.4f    snr=%5.4f\n',snr1,snr2,snr);

wavplay(r1,fs);                         % 从声卡发声比较

pause(1)

wavplay(output,fs);

% 作图

% subplot 311; plot(time,s,'k'); ylabel('幅值'); ylim([-1 1 ]); title('原始语音信号');

% subplot 312; plot(time,r1,'k'); ylabel('幅值') ;ylim([-1 1 ]); title('带噪语音信号');

% subplot 313; plot(time,output,'k'); ylabel('幅值');ylim([-1 1 ]); title('LMS滤波输出语音信号');

subplot 411; plot(time,r1,'k'); ylabel('d r1幅值'); ylim([-1 1 ]); title('原始语音信号');

subplot 412; plot(time,r2,'k'); ylabel('x r2幅值') ;ylim([-1 1 ]); title('带噪语音信号');

subplot 413; plot(time,y,'k'); ylabel('y幅值');ylim([-1 1 ]); title('输出y');

subplot 414; plot(time,e,'k'); ylabel('e幅值') ;ylim([-1 1 ]); title('输出e');

xlabel('时间/s');

2016-8-22 11:13 上传

点击文件名下载附件

339 KB, 下载次数: 198

噪声文件

lms消噪声matlab,关于LMS去噪声的仿真相关推荐

  1. MATLAB对水下目标去噪声代码,水下目标噪声与背景噪声的建模与仿真

    0引言在水声信号处理领域中,舰船在海水中的辐射噪声信号一直是人们研究的热点,它是被动式声呐设备的信息来源,这一信息可用于对舰船目标进行探测.定向.定位.跟踪和识别等.由于实测舰船噪声离散性很大并需要耗 ...

  2. lms算法的matlab实现,LMS算法的MATLAB实现

    LMS算法的MATLAB实现 用MATLAB实现LMS算法,将输入和输出信号对比,并给出均方误差曲线.假设滤波器抽头个数为K,数据长度为N. >> g=100; N=1024; k=128 ...

  3. 【优化】超详细的LMS算法的matlab实现

    LMS自适应滤波算法是基于维纳滤波算法,在最陡梯度下降法的基础上形成的滤波算法,它用梯度矢量的估计值来代替其精确值,应用广泛.本文是自己在入门学习LMS算法时整理归纳所得,里面包含了自己在编程实现时的 ...

  4. 舰船辐射噪声 matlab,基于MATLAB的舰船辐射噪声信号小波消噪处理

    基于MATLAB的舰船辐射噪声信号小波消噪处理 针对舰船辐射噪声信号的特点提出了小波消噪的方法,对小波消噪理论作了简要的阐述,并设计了一种消噪方案,最后利用MATLAB,在计算机 (本文共4页) 阅读 ...

  5. mlse均衡器matlab,基于LMS自适应均衡器matlab仿真.doc

    基于LMS自适应均衡器matlab仿真.doc 毕 业 设 计 (2014届) 题 目 一种基于OpenCV的摄像机标定方法 学 院 物理电气信息学院 专 业 电子信息工程 年 级 2010 学生学号 ...

  6. LMS自适应滤波matlab仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 LMS(Least Mean Square), 由 Widrow 和 Hoff 于1960年提出,也称Δ规则.该算法与感知器网 ...

  7. MATLAB 用LMS算法实现语音去噪,在Matlab中实现基于LMS算法语音信号去噪

    ComputerKnowledgeand Technology 电脑知识与技术 第10卷第32期 (2014年11月) 本栏目责任编辑:谢媛媛软件设计开发 在Matlab中实现基于LMS算法语音信号去 ...

  8. 基于MATLAB的LMS算法仿真实现

    一.引言 自适应滤波器在通信.信号处理和控制领域具有广泛的应用.其中,最小均方误差(Least Mean Square, LMS)算法是一种经典的自适应滤波算法,具有实现简单.收敛速度较快的优点.本文 ...

  9. matlab怎么添加条纹噪声,基于频域的图像条纹噪声消除方法

    基于频域的图像条纹噪声消除方法 徐花艳 孙瑞宁 (长安大学 陕西 西安 710064) 摘 要: 主要以图像去噪为主的研究对象,利用图像的频谱图对图像中的条纹噪声的频率分布进行分析,并使用巴特沃斯带阻 ...

最新文章

  1. vue点击改变data值_vue 中自定义指令改变data中的值
  2. Javascript 原型和继承(Prototypes and Inheritance)
  3. iscsi存储的简单配置
  4. Boost正则表达式
  5. 【Python】Scrapy的安装与使用
  6. 金融时报:人工智能在银行中的应用—对全球30家大型银行的调查
  7. Cookies 、 Session 和 token 的区别
  8. hnu 暑期实训之回文串
  9. .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  10. pccad 电气元件_CAD电气符号库下载|cad电气符号图库大全 GB4728完整版 - 极光下载站...
  11. 开发环境 -- 在linux中写一个脚本拷机
  12. 自己编写一个读取TGA文件的类
  13. 在信用证支付的情况下,空运单可否作成以银行为收货人?在此种情况下可否起到约束进口方付款的作用?...
  14. DIY智能小车篇(一):结构模块
  15. 如何设置双路由器,图文详解
  16. java+vue3实现生成、验证图形验证码,和手机短信验证码
  17. “数据产品经理”的产品技能成长之路
  18. 自己动手,打造自己的事件总线
  19. Qt编写物联网管理平台31-用户权限管理
  20. cartographer导航的时候更新地图

热门文章

  1. 金融业的数字化转型过程大致分为三个阶段
  2. Adobe部分软件PJ版
  3. 数据结构:若借助栈由输入序列1,2…n得到的输出序列为p1p2…pn(它是输入序列的一个排列),证明在输出序列中不可能出现这样的情形:存在着i<j<k,使pj<pk<pi
  4. Oracle(二)Oracle sql操作
  5. python实现rar解压和压缩
  6. 离散数学 学习笔记-Day4
  7. 整存整取的文档设计[by absolutezero]
  8. 向控件拖放数据,不积硅步无以至千里
  9. Dynamics 365 JS调WEB API 报missing privilege ae5c41f0-e823-4cb9-b25a-8ef020201973
  10. 阿里云服务器+MobaXtern+Anaconda