📄 tlms1.m
字号:
%TLMS1 Problem 1.1.1.1.2.2
%
% 'ifile.mat' - input file containing:
% I - members of ensemble
% K - iterations
% sigmax - standard deviation of input
% Wo - coefficient vector of plant
% sigman - standard deviation of measurement noise
% alpha - factor used in transformed-input power estimation
% mu - convergence factor
% b - bits in decimal part
%
% 'ofile.mat' - output file containing:
% ind - sample indexes
% MSE - mean-square error
% MSNDW - mean-square norm of coefficient-error vector
clear all % clear memory
load ifile; % read input variables
L=length(Wo); % plant and filter length
N=L-1; % plant and filter order
salpha=1-alpha; % auxiliary factor
gamma=2^(-b); % small constant to avoid division by 0
for j=1:L,
T(1,j)=1/sqrt(L);
for i=2:L,
T(i,j)=sqrt(2/L)*cos(pi*(i-1)*(2*j-1)/2/L);
end
end % DCT-Transform matrix
MSE=zeros(K,1); % prepare to accumulate MSE*I
MSNDW=zeros(K,1); % prepare to accumulate MSNDW*I
for i=1:I, % ensemble
X=zeros(L,1); % initial memory
TW=zeros(L,1); % initial transformed coefficient vector
sigma2=zeros(L,1); % initial transformed-input power
x=randn(K,1)*sigmax; % input
n=randn(K,1)*sigman; % measurement noise
for k=1:K, % iterations
X=[x(k)
X(1:N)]; % new input vector
S=T*X; % transformed input vector
d=Wo'*X; % desired signal sample
y=TW'*S; % output sample
sigma2=salpha*sigma2+alpha*S.*S;
% transformed-input estimated power
isigma2=1./qround((sigma2+gamma),b); % inverse
e=d+n(k)-y;
e=qround(e,b); % error sample
TW=TW+2*mu*isigma2.*(e*S);
TW=qround(TW,b); % new transformed coefficient vector
MSE(k)=MSE(k)+e^2; % accumulate MSE*I
MSNDW(k)=MSNDW(k)+norm((Wo-T\TW),2)^2;
% accumulate MSNDW*I
end
end
ind=0:(K-1); % sample indexes
MSE=MSE/I; % calculate MSE
MSNDW=MSNDW/I; % calculate MSNDW
save ofile ind MSE MSNDW; % write output variables
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -