You are on page 1of 16

Active Noise

Cancellation Using
FxLMS
Name-Soumya Anand
Roll no.- MTAC2107
Table of Content
1. Introduction
2. Active Noise Cancellation
3. Problem statement
4. ANC using FxLMS
5. FxLMS Algorithm derivation
6. Implementation in MATLAB
7. Results
8. Conclusion
9. Future Scope
10. References
Introduction
• Acoustic Noise are unwanted disturbances generated from industrial equipment.
• Passive noise control techniques fail to suppress low frequency sound.
• Active noise control are electromechanical system that cancels the primary noise based on the
principle of superposition.

Fig1. A signal gets erased by its anti-signal & the result is null
Active Noise Cancellation
Active Noise Control system using LMS algorithm was first developed by Bernard Widrow and his PhD
student, Ted Hoff in 1975.
Feedforward Broadband
ANC
Narrowband
Feedbackward
Fig2. Active noise control system classification

Primary noise
Noise source Error microphone

Reference Cancelling
microphone Loudspeaker
y(n)
x(n)

ANC

Fig3. Broadband Feedforward ANC system in a duct


Problem Statement
The introduction of the S(z) into a controller using the standard LMS algorithm causes instability as the error signal
is not correctly aligned in time with the reference signal due to the presence of S(z).

• P(z) – Represents the primary transmission


x(n) Unknown d(n) e(n) path of the noise source
+
plant P(z) Σ
- • W(z) – Represents the adaptive filter. The
filter coefficients are adjusted on the basis
of the measured error.

• S(z) – Represents the secondary path


Adaptive y(n) y’(n)
S(z) transmission. The signal is transformed
filter W(z) from an electrical into an acoustical signal.
It is unknown.

• Summation point – At this point the two


LMS signals are superimposed acoustically.

Fig4. Block diagram of ANC system using the LMS algorithm.


ANC using FxLMS
• Filtered-x LMS algorithm uses estimation of S(z) to mitigate the issue.
• It was developed by Widrow and Burgess in 1980’s.

x(n) Unknown d(n) + e(n)


plant P(z) Σ
-

Adaptive y(n) y’(n)


S(z)
filter W(z)

S^ (z)
x’(n)
LMS

Fig5. Block diagram of ANC system using the FxLMS algorithm.


FxLMS algorithm derivation
• The objective of W(z) is to minimize the residual error .

where, s

Mean square cost function

Instantaneous squared error


=2e(n)
Continued…
Using Steepest Descent Algorithm in negative gradient direction with step size μ

Since S(z) is mostly unknown,


The above equation is the required expression for the weight update for successive iterations in the FxLMS
algorithm.
The maximum step size value above which system becomes unstable is

where ,
Implementation in MATLAB
1. clc; clear all; close all;
2. N=1000; % samples
3. % P(z) and S(z) dummy paths
4. Pw=[0.01 0.25 0.5 1 0.5 0.25 0.01];
5. Sw=Pw*0.25;
6. % estimate S(z)
7. x_est=randn(1,N);
8. % measuring it at the sensor position
9. y_est=filter(Sw, 1, x_est);
10.% Initialize
11.Shx=zeros(1,16); % the state of Sh(z)
12.Shw=zeros(1,16); % the weight of Sh(z)
13.e_est=zeros(1,N); % error
14.% least mean square algorithm
15.mu=0.1; % step size
Continued…
16.for k=1:N % discrete time k
17. Shx=[x_est(k) Shx(1:15)]; % updating the state
18. Shy=sum(Shx.*Shw); % calculating o/p of Sh(z)
19. e_est(k)=y_est(k)-Shy; % calculating error
20. Shw=Shw+mu*e_est(k)*Shx; % update equation
21.end
22.% active noise control
23.X=randn(1,N); % generating the noise
24.% noise at the sensor position
25.Yd=filter(Pw, 1, X);
26.% Initiate the system
27.Cx=zeros(1,16); % the state of C(z)
28.Cw=zeros(1,16); % the weight of C(z)
29.Sx=zeros(size(Sw)); % initializing secondary path
30.e_cont=zeros(1,N); % control error
31.Xhx=zeros(1,16); % the state of the filtered x(k)
Continued…
32.% FxLMS algorithm
33.mu=0.1; % step size
34.for k=1:N % discrete time k
35. Cx=[X(k) Cx(1:15)]; % updating the controller state
36. Cy=sum(Cx.*Cw); % calculating the controller output
37. Sx=[Cy Sx(1:length(Sx)-1)]; % propagating to secondary path
38. e_cont(k)=Yd(k)-sum(Sx.*Sw); % measuring the residue error
39. Shx=[X(k) Shx(1:15)]; % updating the state of Sh(z)
40. Xhx=[sum(Shx.*Shw) Xhx(1:15)]; % calculating the filtered x(k)
41. Cw=Cw+mu*e_cont(k)*Xhx; % adjusting the controller weight
42.end
43.subplot(2,1,1)
44.plot([1:N], e_cont)
45.ylabel('Amplitude');
46.xlabel('Discrete time k');
47.title('Noise residue');
Result

Fig6. Noise residue or residual error decreases with discrete time k


Conclusion
• FxLMS algorithm is more effective in ANC system then LMS algorithm.
• Fixed step size FxLMS algorithm used for ANC has slow convergence rate.
• The computational complexity of the system increases.
Future scope
• The FxLMS can be converted into variable step size algorithm for faster convergence.
• Other variants of LMS algorithm can also be used for ANC systems for faster convergence.
References
1. Kuo, Sen & Morgan, Dennis. (1999). Active noise control: A tutorial review. Proceedings of the IEEE. 87.
943 - 973. 10.1109/5.763310.
2. M. Rupp and A. H. Sayed, "Robust FxLMS algorithms with improved convergence performance," in IEEE
Transactions on Speech and Audio Processing, vol. 6, no. 1, pp. 78-85, Jan. 1998, doi: 10.1109/89.650314.
3. D. Chang and F. Chu, "A New Variable Tap-Length and Step-Size FxLMS Algorithm," in IEEE Signal
Processing Letters, vol. 20, no. 11, pp. 1122-1125, Nov. 2013, doi: 10.1109/LSP.2013.2282396.
4. Agustinus Oey (2021). Active noise control system using FxLMS
algorithm (https://www.mathworks.com/matlabcentral/fileexchange/27277-active-noise-control-system-
using-fxlms-algorithm), MATLAB Central File Exchange.
Thank You!!!

You might also like