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

📄 adapteq.m

📁 基础自适应均衡化利用lms或rls方法,通俗易懂,适合初学者
💻 M
字号:
%
% Basic adaptive equalization using LMS and RLS.
%
% By Andreas Jakobsson, 040306.
clear; close all;

% Initialize parameters.
NoTrials = 200;         % Number of independent trials.
var_v    = 0.001;       % Variance of additive noise.
eqOrder  = 11;          % Equalizer order.
Delta    = 7;           % Time-delay.
dataLen  = 500;         % Number of iterations.
W        = 2.9;         % Channel distortion.

% Generate filter as a raised cosine.
h = 0.5*( 1 + cos(2*pi/W*((1:3)-2)) );

% Evaluate NoTrials independent trials to enable averaging.
Npred = dataLen-eqOrder-1;
el2 = zeros( Npred, NoTrials ); % Squared estimation error (LMS).
er2 = zeros( Npred, NoTrials ); % Squared estimation error (RLS).
ew2 = zeros( Npred, NoTrials ); % Squared estimation error (Wiener).
Wli = zeros( Npred, eqOrder );  % Estimated equalizer (LMS).
Wri = zeros( Npred, eqOrder );  % Estimated equalizer (RLS).

for iter = 1:NoTrials,    

    % Generate transmitted and received data.
    a = 2*(rand(dataLen,1) > 0.5 )-1;   % Transmitted signal.
    Xi = conv( a, h );                 
    Xi = Xi( length(h)+1:length(Xi) );  % Channel output prior to noise.
    v  = sqrt(var_v)*randn(length(Xi),1);
    Xi = Xi + v;                        % Received signal (with noise).
    Y = a( (Delta+1):dataLen );         % Delayed transmitted signal.
    
    % Compute the adaptive equalizer.
    Wl = zeros( eqOrder,1 );            % LMS equalizer.
    Wr = zeros( eqOrder,1 );            % RLS equalizer.
    for n=1:Npred,
        xn = Xi( n:(eqOrder+n-1) );     % Input data vector.
        
        % Wiener.
        % --------- Implement the Wiener solution here -------
        %
        % ----------------------------------------------------        
        ew2(n,iter) = abs(ew)^2;        % Store squared error (Wiener).
        
        % LMS.
        % --------- Implement the LMS algorithm here ---------
        % Wl = ....
        % ----------------------------------------------------
        el2(n,iter) = abs(el)^2;        % Store squared error (LMS).
        
        % RLS.
        % --------- Implement the RLS algorithm here ---------
        % Wr = ....
        % ----------------------------------------------------
        er2(n,iter) = abs(er)^2;        % Store squared error (RLS).       
    end    
    Wli(iter,:) = Wl';                  % Store estimated equalizer (LMS).
    Wri(iter,:) = Wr';                  % Store estimated equalizer (RLS).
end

% Compute Jmin as the average estimation error of the Wiener filter.
Jmin = mean( mean( ew2,2 ) );

% Display ensamble-averaged square error and averaged equalizer.
figure
stem([ mean(Wli)' mean(Wri)'] )
legend('LMS','RLS')
title('Average adaptive equalizer')

figure
semilogy( [mean(el2,2) mean(er2,2) Jmin*ones(Npred,1) ] )
legend('LMS','RLS','Jmin')
xlabel('Number of iterations')
ylabel('Ensamble-averaged square error')

⌨️ 快捷键说明

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