matlab专业代做hslogic,hslogic算法仿真-基于LMS算法的自适应滤波器

核心提示:hslogic算法仿真-基于LMS算法的自适应滤波器...

function [Weights, symbolDet, symbolEst, symbolErr]=lmseq(initFwdWts,initFbkWts,stepSize, noisySig,sigConst,trainSig)

% LMS-DFE equalization algorithm -------------------------------------------

% input-----------------------------------------------------------------

% initWts: initial weights, if length(initWts)==1, initWts is number of

%          weights, else, is the initial weights

%   - initFwdWts: forward weights;

%   - initFbkWts: backward weights;

% stepSize: step-size in LMS algorithm

% noisySig: received noisy signal

% sigConst: signal constellation

% trainSig: training symbols

% output ---------------------------------------------------------------

% Weights: final weights by adaptive LMS algorithm

% symbolEst: filtered output

% symbolDet: determined the filtered output

% symbolErr: error in iterations

%-----------------------------------------------------------------------

% zhenglin 2009.11 in GUET

%-----------------------------------------------------------------------

% Check number of arguments; if only two, set trainSig to zero length.

if nargin<6, trainSig=[]; end

%if length(initWts)==1, initWts is number of weights,

% else, initWts is the initial weights

if length(initFwdWts)~=1

nFwdWts = length(initFwdWts);

nFbkWts = length(initFbkWts);

w = [initFwdWts;initFbkWts];

else

nFwdWts = initFwdWts;

nFbkWts = initFbkWts;

w= zeros(nFwdWts+nFbkWts,1);

end;

nWts = nFwdWts+nFbkWts;

blindMode = 0;

trainNum = length(trainSig);

if(trainNum==0)

if length(sigConst)==0

warning('zhenglin:lmseq',...

['No Constellation is provided in blind mode.']);

end;

symNum = length(noisySig);

blindMode = 1;

else

symNum = trainNum;

end;

noisySig = [noisySig;zeros(nFwdWts+symNum-length(noisySig),1)];

r= zeros(nWts,1);

err = zeros(symNum,1);

det = zeros(symNum,1);

est = zeros(symNum,1);

% Constellation-related parameters.

conjConst = conj(sigConst);

constParam = 0.5*real(sigConst.*conjConst);

dref = 1;

for i=1:symNum

r(1:nFwdWts) = noisySig(i:i+nFwdWts-1); % shift to left

r(nFwdWts+1:nWts-1) = r(nFwdWts+2:nWts);

r(nWts) = dref;

y = w'*r;

% Find closest signal constellation point (detector/slicer).

[minMetric, idx] = min(constParam - real(y*conjConst));

d = sigConst(idx);

if(blindMode)  % blind decision-directed mode

dref = d;

else

dref = trainSig(i);

end;

e = dref - y;

err(i) = e;

det(i) = d;

est(i) = y;

w=w + stepSize*conj(e)*r;% update the weights

end;

Weights = w;

symbolErr   = err;

symbolDet   = det;

symbolEst   = est;

return;

联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

微信扫一扫:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值