close all;
clear all;
% 输入参数:
% xn 输入的信号序列 (列向量)
% dn 所期望的响应序列 (列向量)
% M 滤波器的阶数 (标量)
% mu 收敛因子(步长) (标量) 要求大于0,小于xn的相关矩阵最大特征值的倒数
% 输出参数:
% W 滤波器的权值矩阵 (矩阵)
% 大小为M x itr,
% en 误差序列(itr x 1) (列向量)
% yn 实际输出序列 (列向量)
%采集输入音频信号,把双通道音频转化成单通道
[sampledata,FS] = audioread('狂鼠.mp3');
xn = sampledata(:,1);
length1= length(xn);
n = 1:length1;
audiowrite('单通道信号.wav',xn,FS);
[sampledata1,FS]=audioread('单通道信号.wav');
sound(sampledata1,FS);
subplot(2,1,1);
plot(n,xn);
title('原始信号');
pause(3);
%将原始信号加入经过AR模型信号生成的噪声,得到实际信号
v = randn(length1,1);
ar = [1,1/2];
noise1 = filter(1,ar,v);
x = xn + noise1;
audiowrite('含噪信号.wav',x,FS);
sound(x,FS);
subplot(2,1,2);
plot(n,x);
title('含噪信号');
pause(3);
ma = [1,-0.8,0.4,-0.2];
noise2 = filter(ma,1,v);
M = 30; %滤波器阶数
%LMS滤波器
%从MA模型生成的噪声中去提取出原始信号
[yn1,W,en]= LMS(noise2,x,M,0.001); %用梯度下降法来求出对信号中所含的噪声的估计
x_LMS = x - yn1; %含噪信号减去噪声估计间接得到了原始信号的估计;
sound(x_LMS,FS);
audiowrite('LMS滤波后信号.wav',x_LMS,FS);
figure();
subplot(2,1,1);
plot(n,x_LMS);
title('LMS滤波信号');
%误差计算
subplot(2,1,2);
signal_error = xn - x_LMS;
plot(n,signal_error);
title('LMS滤波误差');
pause(3);
%%%RLS滤波器
M1=30;%%RLS滤波器阶数
%从MA模型生成的噪声中去提取出原始信号
[yn2,W2,en]= RLS(noise2,x,M1,0.98); %递归最小二乘法来求出对信号中所含的噪声的估计
x_RLS = x - yn2; %含噪信号减去噪声估计间接得到了原始信号的估计;
sound(x_RLS,FS);
audiowrite('RLS滤波后信号.wav',x_RLS,FS);
figure();
subplot(2,1,1);
plot(n,x_RLS);
title('RLS滤波信号');
%误差计算
subplot(2,1,2);
signal_error2 = xn - x_RLS;
plot(n,signal_error2);
title('RLS滤波误差');
LMSandRLS.zip_RLS_itsvwe_lms_lms RLS 语音
版权申诉
90 浏览量
2022-07-14
19:33:03
上传
评论
收藏 1KB ZIP 举报
小波思基
- 粉丝: 72
- 资源: 1万+
最新资源
- Picasso_v3.1 2.ipa
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0