matlab求trms,求改正LS和LMMSE算法的matlab程序,。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

function output=ls_estimation(input,pilot_inter,pilot_sequence,pilot_num);

[N,NL]=size(input);

output=zeros(N,NL-pilot_num);

i=1;

count=0;

while i<=NL

Hi=input(:,i)./pilot_sequence;

count=count+1;

if count*pilot_inter<=(NL-pilot_num)

for j=((count-1)*pilot_inter+1):count*pilot_inter

output(:,j)=input(:,(i+j-(count-1)*pilot_inter))./Hi;

end

else

for j=((count-1)*pilot_inter+1):(NL-pilot_num)

output(:,j)=input(:,(i+j-(count-1)*pilot_inter))./Hi;

end

end

i=i+pilot_inter+1;

end

这是LS的

function output=lmmse_estimation(input,pilot_inter,pilot_sequence,pilot_num,trms,t_max,snr);

%trms为多经信道的平均延时,t_max为最大延时,此处所有的时间都是已经对采样间隔做了归一化后的结果

beta=17/9;

[N,NL]=size(input);

Rhh=zeros(N,N);

for k=1:N

for l=1:N

Rhh(k,l)=(1-exp((-1)*t_max*((1/trms)+j*2*pi*(k-l)/N)))./(trms*(1-exp((-1)*t_max/trms))*((1/trms)+j*2*pi*(k-l)/N));

end

end

output=zeros(N,NL-pilot_num);

i=1;

count=0;

while i<=NL

Hi=input(:,i)./pilot_sequence;

Hlmmse=Rhh*inv(Rhh+(beta/snr)*eye(N))*Hi;

count=count+1;

if count*pilot_inter<=(NL-pilot_num)

for j=((count-1)*pilot_inter+1):count*pilot_inter

output(:,j)=input(:,(i+j-(count-1)*pilot_inter))./Hlmmse;

end

else

for j=((count-1)*pilot_inter+1):(NL-pilot_num)

output(:,j)=input(:,(i+j-(count-1)*pilot_inter))./Hlmmse;

end

end

i=i+pilot_inter+1;

end

这是LMMSE的 老是程序跑不起来。。求大神gaiz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值