matlab程序语句功能求解,下面这短程序什么意思clc;clear;ref =wavread('i

发布时间:2021-03-05 04:05:28

matlab程序语句功能求解,下面这短程序什么意思clc;clear;ref =wavread('in.wav'); % Load near endapm = 0.1; %噪声幅度firLen = 160;mu = 0.8;a = zeros(1,firLen);dataLen = length(ref);eout = zeros(1,dataLen);bbeout = zeros(1,dat

网友回答

firLen = 160;定义了滤波器的长度
mu = 0.8;
定义了学习因子的大小,也是自适应算法的迭代步长a = zeros(1,firLen);
这句产生了一个1行160列的零向量.clc;clear;
% ref =wavread('in.wav'); % Load near endref = wgn(1,1024,0).'; % 我加了这句,因为我没有你的音频文件,不妨碍功能验证和你对程序原理的理解apm = 0.1; %噪声幅度
firLen = 160;
% 定义了滤波器的长度mu = 0.8;
% 学习因子a = zeros(1,firLen);
dataLen = length(ref);
% 获取了ref信号向量的长度eout = zeros(1,dataLen);
% 产生1行dataLen列的行向量bbeout = zeros(1,dataLen);
% 同上firIn = zeros(1,firLen);
% 同afirIntwo = zeros(1,firLen);
% 同上noise = apm*rand(1,dataLen);
% 产生随机噪声,用来干扰语音信号,实际上我这里也用噪声作为语音信号near = ref'+noise;
% 产生含加性噪声的语音信号,表示语音信号被噪声污染了%%%自适应滤波学习bbe模型
for i=1:dataLen
for j = firLen-1:-1:1 firIn(j+1) = firIn(j); end % 这个for循环让firIn向量的后一个值等于前一个值 firIn(1) = noise(i); % 第一个值等于噪声 firOut = a*firIn'; %fir滤波 这一步实现的是横向滤波器的操作 e = near(i)-firOut; %求误差信号 a = a+e*mu*firIn; %lms 系数更新 eout(i) = e;end% wavwrite(eout,16000,'out.wav');figure
以上问题属网友观点,不代表本站立场,仅供参考!