資源簡介
基于FXLMS算法的主動噪聲控制,完成的是單頻率的前饋雙通道的主動噪聲控制算法
代碼片段和文件信息
%?filter?parameters
tic;
M=16;??????%?number?of?taps
step=0.0001;???%?step-size?parameteR
e_max=5024;?%?maximum?#of?epochs?
K=120;
G=170;
Y=500;
D=1000;
%?constants
pi=3.14;
%?initialize
pp=zeros(124);
qq=zeros(17);
pr=zeros(124);
x=zeros(121);
w1=zeros(1M);
w2=zeros(1M);
r11=zeros(1M);
r12=zeros(1M);
r21=zeros(1M);
r22=zeros(1M);
ss1=zeros(1e_max);
ss2=zeros(1e_max);
ee1=zeros(1e_max);
ee2=zeros(1e_max);
dd=zeros(1e_max);
hp=[1?0.05?0.1?0.09?0.05?0.5?0.002];
hr=[1?0.5?0.02?0.05];
h11=[1?0.5?0.01?0.9?0.005?0.02];
h22=[1?0.5?0.01?0.9?0.005?0.02];
h12=[1?0.6?0.02?0.8?0.05?0.004];
h21=[1?0.6?0.02?0.8?0.05?0.004];
%計算部分
for?t=1:24
????pp(t)=sin((K/D)*2*pi*(25-t)+pi/5?)+sin((G/D)*2*pi*(25-t))+sin((Y/D)*2*pi*(25-t));
????pr(t)=sin((K/D)*2*pi*(25-t)+pi/5?)+sin((G/D)*2*pi*(25-t))+sin((Y/D)*2*pi*(25-t));
end
t=25;
epoch=0;
while?epoch ?????input=sin((K/D)*2*pi*t+pi/5?)+sin((G/D)*2*pi*t)+sin((Y/D)*2*pi*t);
??????for?i=2:7
??????????pp(7-i+2)=pp(7-i+1);
??????end
??????pp(1)=input;
??????for?i=1:7
??????qq(i)=pp(i);
??????end
??????d=dot(qqhp);?
??????dd(epoch+1)=d;?????%期望信號??
??????for?i=2:24
??????????pr(24-i+2)=pr(24-i+1);
??????end
??????pr(1)=input;
??????for?i=1:21
??????????for?j=1:4?
??????????????x(i)=x(i)+pr(i+j-1)*hr(j);?????????????
??????????end
??????end
??????for?i=1:16?????????????
??????????for?j=1:6??
??????????????r11(i)=?r11(i)+x(i+j-1)*h11(j);
????
評論
共有 條評論