⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lms_noise_cancellation.m

📁 this is code for noice remove
💻 M
字号:
% filter parameters
M=20;      % number of taps
mu=0.05;   % step-size parameter
e_max=500; % maximum #of epochs

% constants
pi=3.14;
Fs=0.02;   % signal frequency
Fn=0.05;   % noise frequency

% initialize
w=(randn(1,M)-randn(1,M))/100;
d=zeros(1,M);
u=zeros(1,M);
u_out=zeros(1,e_max-M);
f_out=zeros(1,e_max-M);

% Generate desires signal and input(signal+noise)
for t=1:M-1
    d(t)=sin(2*pi*Fs*t);
    u(t)=d(t)+0.5*sin(2*pi*Fn*t)+randn;
end
t=M;
epoch=0;

while epoch<e_max
    % generate new input
    input=sin(2*pi*Fs*t);
    % shift new input into array
    for i=2:M
        d(M-i+2)=d(M-i+1);
        u(M-i+2)=u(M-i+1);
    end
    d(1)=input;
    % add undesired freq & random noise
    u(1)=input+0.5*sin(2*pi*Fn*t)+0.09*randn;
    u_out(t-M+1)=u(1);
    
    % compute filteroutput
    output=dot(w,u);
    f_out(t-M+1)=output;
    
    % LMS algorithm
    % compute error
    e=d(1)-output;
    
    % update weights
    for n=1:M
        w(n)=w(n)+mu*u(n)*e;
    end
    
    %
    in(t-M+1)=u(1);
    out(t-M+1)=output;
    err(t-M+1)=e;
    
    t=t+1;
    epoch=epoch+1;
    
    %  plot noise and filtered signal
    figure(1)
    subplot(211);
    plot(t,u(1));axis([0 e_max -2.5 2.5]);
    title('滤波器输入')';
    hold on;
    subplot(212);
    plot(t,d(1));axis([0 e_max -2.5 2.5]);
    title('滤波器输出')';
    hold on;
    figure(2)
    subplot(211);
    plot(t,output);axis([0 e_max -2.5 2.5]);
    title('滤波输出信号')';
    hold on;
     subplot(212);
    plot(t,e);axis([0 e_max -2.5 2.5]);
    title('误差信号')';
    hold on;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -