| Purpose |
| Block filtering and coefficient update in frequency domain using the Multichannel Frequency Domain Adjoint LMS (MCFDADJLMS) for multichannel active noise and vibration control applications. |
| Syntax |
[W,w,x,y,e,p,yF,feF] = asptmcfdadjlms(NC,W,x,xn,dn,yF,...
feF,S,SE,p,mu,b,c)
|
| Description |
asptmcfdadjlms() is the frequency domain implementation of asptmcadjlms(). The difference between MCFDADJLMS and its time domain counterpart MCADJLMS is that filtering and coefficient update are performed in frequency domain using the overlap-save method. Fig. 7.11 shows the parameters of asptmcfdadjlms() which are summarized below.
Input Parameters ::
NC : controller length in time domain
W : freq. domain filter coef. matrix [NB x Nref x Nact]
x : previous overlap-save input matrix [NB x Nref]
xn : new input samples block [NL x Nref]
dn : new primary samples block [NL x Nsens]
yF : previous buffer of y(n) [NB x Nact]
feF : previous buffer of fe(n) [NB x Nact]
S : FIR model of the secondary paths [NB x Nact x Nsens]
SE : estimated FIR model of S [NB x Nact x Nsens]
p : last estimated power of x(n) [NB x Nref]
mu : adaptation constant
b : pole of AR filter used in estimating p
c : if not zero, uses the constrained BFDAF algorithm.
Output parameters ::
W : updated frequency domain filter coefficients
w : updated time domain filter coefficients
x : updated overlap-save input matrix
y : controller output block
e : new error block
p : updated estimate of power of x(n)
yF : updated output buffer
feF : updated filtered error buffer
|
| Example |
% This example simulates a MIMO control system with a single
% primary (reference) signal, two actuators and two sensors.
iter = 5000; % Number of samples to process
ph = [0 .9 .5 .3 .1 ; 0 .8 .5 .2 .5]';
ph = reshape(ph,5,1,2); % Primary path impulse response
sh = zeros(3,2,2); % Secondary path impulse response
sh(:,1,1) = [0.5;0.4;0.1];
sh(:,2,2) = [0.5;0.4;0.1];
se = 0.95*sh; % estimation of sh
xa = 2*(rand(iter,1)-0.5); % Input signal, zero mean random.
da = mcmixr(ph,xa,0); % Primary response at the sensor
sens = zeros(iter,2); % matrix for sensors signal
NC = 10; % controller length
NL = 6; % block length
mu = 0.01/NC; % step size for block processing
c = 1; % constrain filter to NC coef.
b = 0.98; % AR pole
% Initialize MCFDADJLMS algorithm
[NB,W,w,x,y,d,e,p,S,SE,yF,feF] = init_mcfdadjlms(NC,NL,1,2,2,sh,se);
%% Processing Loop
for (m=1:NL:iter-NL)
xn = xa(m:m+NL-1,:); % new input block of NL samples
dn = da(m:m+NL-1,:); % new desired block of NL samples
% call asptmcfdadjlms to calculate the controller output
% and update the coefficients.
[W,w,x,y,e,p,yF,feF] = asptmcfdadjlms(NC,W,x,xn,dn,...
yF,feF,S,SE,p,mu,b,c);
sens(m:m+NL-1,:) = e; % save controlled sensors' signals
end;
% display the sensors' signals before and after the control effort
subplot(2,2,1); plot([da(:,1) sens(:,1)]); grid
subplot(2,2,2); plot([da(:,2) sens(:,2)]); grid
Running the above script will produce the graph shown in Fig. 7.12. In this figure,
the signals recorded by the sensors before and after applying the MIMO control effort,
|
| Algorithm |
The MIMO control problem addressed by ASPTMCFDADJLMS is to reduce the noise (or vibration) produced by Nref primary sources at the positions of Nsens sensors using a matrix of [Nref x Nact] controllers driving Nact actuators. To achieve this goal, ASPTMCFDADJLMS performs the following operations.
|
| Remarks |
|
| Resources |
The resources required to implement the constrained MCFDADJLMS algorithm in real time is given in the table below.
In this table,
|
| See Also |
| INIT_ MCFDADJLMS, ANVC_ MCFDADJLMS, ASPTADJLMS, ASPTFDADJLMS, ASPTMCADJLMS. |
| Reference |
| [3], Chapter 3 for detailed description of the MCFDADJLMS, [8] for the overlap-save method, and [9] for frequency domain adaptive filters. |