fig8_13.m

来自「数字信号处理Matlab演示文件,其中各个文件加放置了不同的matlab子文件」· M 代码 · 共 58 行

M
58
字号
%	Figure 8.13
%	requires additional functions in files
%	chan.m		;white noise & noise shaping filter
%	sys.m		;unknown system & additive white noise
%	lms.m		;LMS adaptive filter
%	rls.m		;RLS adaptive filter
%	c.f. Figure 8.12 for configuration

%	Adaptive filter convergence comparison
%	BM
%	July 1997

clf
colordef(1,'black')

M = 1000;		%no. of data samples (iterations)
nensem = 1;		%no. of runs for ensemble average

%	FIR noise shaping filter - comment out as appropriate
h = [ 1 0 0 ];			%(a) EVR = 1
%h = [ 0.2602 0.9298 0.2602 ];	%(b) EVR = 11
%h = [ 0.3842 0.8704 0.3482 ];	%(c) EVR = 68

nchan = max(size(h));

%	FIR system to be identified
nsys = 16;			%no. of taps
t = 0:nsys-1;
hopt = exp(-t);			%impulse response
hopt = hopt/sqrt(hopt*hopt');	%normalise o/p variance to unity
npower = -60;			%relative noise power in dB
sigman = 10^(npower/20);	%noise rms

N = M+nsys;
tt = 0:M;
range = 1+nsys-2:M+nsys-1;

%	ensemble average over nensem convergence plots
lsum_norm = zeros(1,N);
rsum_norm = zeros(1,N);
for jj = 1:nensem
	x = chan(h,N);
	y = sys(hopt,x,sigman);
	[lerr_norm, lerr_sq] = lms(x,y, nsys, hopt);
	[rerr_norm, rerr_sq] = rls(x,y, nsys, hopt);
	lsum_norm = lsum_norm + lerr_norm;
	rsum_norm = rsum_norm + rerr_norm;
end
lsum_norm(range(1))= 1;
rsum_norm(range(1))= 1;

set(gca,'FontSize', 18)
plot(tt,10*log10(lsum_norm(range)/nensem),tt,10*log10(rsum_norm(range)/nensem))
grid
set(gca,'FontSize', 18)
xlabel('iterations');
ylabel('norm (dB)');

⌨️ 快捷键说明

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