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

📄 teqfb.m

📁 ADSL经典仿真程序
💻 M
字号:
% teqfb TEQ Filter Bank Design Method
% [rmax,optiamlD,teqfbcoef]=teqfb(channel, inputSignal, AWGNnoise, NEXTnoise, D, gamma, N, Nw, Nb)
% returns the max bit rate in rmax, the optimal delay in optimalD, the optimal TEQ filter bank
% coefficients in teqfbcoef (one row in teqfbcoef represents one TEQ for a certain subcarrier).
%
% channel is the channel impulse response. totalinputSignalpower is total 
% transmitter signal without noise. totalAWGNpower is the total AWGN noise
% power. NEXTsigma is the averaged NEXT correlation matrix. 
% Dmin is the minimum delay. Dmax is the maximum delay. gamma is the SNR gap. N is 
% the FFT size. Nw is the TEQ length. Nb is the SIR length. 
%
% The algorithm is from:
% M. Milosevic, L.F.C. Pessoa, B. L. Evans, and R. Baldick, "Optimal Time 
% Domain Equalization Design for Maximizing Data Rate of Discrete Multi_tone
% Systems", IEEE Trans. on Signal Proc., accepted for publication.
%
% M. Milosevic, L. F. C. Pessoa, B. L. Evans, and R. Baldick,
% "DMT Bit Rate Maximization With Optimal Time Domain Equalizer
% Filter Bank Architecture", Proc. IEEE Asilomar Conf. on Signals,
% Systems, and Computers, Nov. 3-6, 2002, vol. 1, pp. 377-382,
% Pacific Grove, CA, USA, invited paper.
%
% Copyright (c) 1999-2003 The University of Texas
% All Rights Reserved.
%  
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%  
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%  
% The GNU Public License is available in the file LICENSE, or you
% can write to the Free Software Foundation, Inc., 59 Temple Place -
% Suite 330, Boston, MA 02111-1307, USA, or you can find it on the
% World Wide Web at http://www.fsf.org.
%  
% Programmers:	Zukang Shen
% Version:        %W% %G%
% 
% The authors are with the Department of Electrical and Computer
% Engineering, The University of Texas at Austin, Austin, TX.
% They can be reached at arslan@ece.utexas.edu.
% Guner Arslan is also with the Embedded Signal Processing
% Laboratory in the Dept. of ECE, http://signal.ece.utexas.edu.

function [maxr,maxsubsnr,optimalD,teqfbcoef,maxfeqcoef,totalRateVector]=teqfb(channel, inputSignal, AWGNnoise, NEXTnoise, Dmin, Dmax, gamma, N, Nw, Nb, delaySearch)
totalinputSignalpower=cov(inputSignal);
totalAWGNpower=cov(AWGNnoise);
NEXTsigma=nextsigma(NEXTnoise,N,Nw);


%consider subcarriers from 7 to N/2
[figHndl statusHndl] = setprogbar('Calculating TEQ filter bank ...'); 

if delaySearch==1
%since thorough search for optimal delay is very time consuming, here we use new optimal delay got from findchanneldelay
optimalD=findchanneldelay(channel, Nb);
for D=optimalD
    rmax=0;
    teqfbcoeftmp=[];
    for k=7:N/2 
        updateprogbar(statusHndl,k,N/2);
        [A,B]=teqfb_ab(channel, totalinputSignalpower, totalAWGNpower, NEXTsigma, D, gamma, N, Nw, Nb, k);
        %find the largest generalized eigen value of (real(A),real(B))
        [V,DD]=eig(real(A),real(B));
        [maxEigValue,maxEigValueindex]=max(abs(diag(DD)));
        teqfbcoeftmp=[teqfbcoeftmp;V(:,maxEigValueindex).'];
        feqtemp=fft(channel,N).*fft(V(:,maxEigValueindex),N);
        feqcoef(k)=1/feqtemp(k);
        r(k)=log2(maxEigValue);
        subsnr(k)=maxEigValue-1;
    end
       totalRateVector=sum(r);
       rmax=sum(r);
       maxr=r;
       optimalD=D;
       maxsubsnr=subsnr;
       teqfbcoef=teqfbcoeftmp;
       maxfeqcoef=feqcoef;
    
end
close(figHndl);
end

if delaySearch==0
    rmax=0;
    teqfbcoeftmp=[];
    for D=Dmin:Dmax
    D
    for k=7:N/2 
        k
        updateprogbar(statusHndl,N/2*(D-Dmin)+k,N/2*(Dmax-Dmin+1));
        [A,B]=teqfb_ab(channel, totalinputSignalpower, totalAWGNpower, NEXTsigma, D, gamma, N, Nw, Nb, k);
        %find the largest generalized eigen value of (real(A),real(B))
        [V,DD]=eig(real(A),real(B));
        [maxEigValue,maxEigValueindex]=max(abs(diag(DD)));
        teqfbcoeftmp=[teqfbcoeftmp;V(:,maxEigValueindex).'];
        feqtemp=fft(channel,N).*fft(V(:,maxEigValueindex),N);
        feqcoef(k)=1/feqtemp(k);
        r(k)=log2(maxEigValue);
        subsnr(k)=maxEigValue-1;
    end
    totalRateVector(D-Dmin+1)=sum(r);
    if (sum(r)>rmax)
       rmax=sum(r)
       maxr=r;
       optimalD=D;
       maxsubsnr=subsnr;
       teqfbcoef=teqfbcoeftmp;
       maxfeqcoef=feqcoef;
    end
end
close(figHndl);
end
    

⌨️ 快捷键说明

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