返回信息流自己编的程序结果完全不对,可是自己看了几天完全找不出问题在哪,求大神指教,学妹拜谢!!
想实现如上图的基于ls的信道估计算法,uw是以64为格蕾a序列为实部,b序列为虚部构成的,ces由9个重复的uw构成,代码如下:
clear all
clc
seed = 0;
j = sqrt(-1);
randn('state',seed);
rand('state',seed);
[imp_res] = cr_ch_model;
[imp_reszz]=[imp_res]';
scpreamble=testPHY_Preamble_Gen('SCPHY');%sc的发送序列
scchipout=conv(scpreamble,imp_reszz)';%经过信道,1024*1
sccesr=scchipout(65:576);%提取ces
UW1=sccesr(1:64);
UW2=sccesr(65:128);
UW3=sccesr(129:192);
UW4=sccesr(193:256);
UW5=sccesr(257:320);
UW6=sccesr(321:384);
UW7=sccesr(385:448);
UW8=sccesr(449:512);%8个重复的UW
ycaverage=zeros(64,1);
for n=1:64
ycaverage(n)=(UW1(n)+UW2(n)+UW3(n)+UW4(n)+UW5(n)+UW6(n)+UW7(n)+UW8(n))/8;
end%做时域平均
yfc=fft(ycaverage,64);%做FFT
UW64=UW(64);
SCPHY_CEF_Seq=[UW64];
UW64s=SCPHY_CEF_Seq.*exp(j*pi/2.*(0:length(SCPHY_CEF_Seq)-1));
ufcfft=fft(UW64s,64);
A=[ufcfft(2:64),ufcfft(1)];
Ufc=diag(A);
Ufcn=inv(Ufc);
CFRE=Ufcn*yfc;%频域
CIRE=ifft(CFRE);
这是一条镜像帖。来源:北邮人论坛 / communications / #26469同步于 2016/4/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Communications机器人发帖
基于ls的信道估计,问题找到了,po在三楼供大家参阅蠢哭了的楼
maodou
2016/4/25镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
楼主发现了问题在哪,
[imp_reszz]=[imp_res]';
scchipout=conv(scpreamble,imp_reszz)';
这两句转置应该是.'只用'的意思是共轭加转置,楼主因为这个点被卡住了一周。po一下原因防止其他人犯跟楼主一样蠢哭了的错误
受教了.谢谢指导
【 在 syx828 的大作中提到: 】
: 2333,还是对matlab不熟悉啊
:
: 给个建议,UW1到UW8可以用reshape实现
: ycaverage用mean实现
:
: 代码会清晰简单很多
:
发自「贵邮」