资源简介
使用matlab的OFDM导频ls lmmse信道估计,QAM16数据经OFDM调制,使用lmmse做导频点信道估计,然后线性插值,解调

代码片段和文件信息
clc;
clear;
Nsym=600;
L=1024;
NFFT = L; % Next power of 2 from length of y
fs=15*1024*10^3;
fs1=15*10^3*1024;
Ts =1/fs;
Fd =0;%Hz
% tau = 0;
% pdb = 0;
% tau = [0 1.5*Ts 1.8*Ts 2.7*Ts 3.7*Ts 4.7*Ts 7.7*Ts];
% pdb = [0 -5 -7 -7 -7 -8 -9];
tap1=2*Ts; tap2= 4*Ts;
tau = [0 tap1 tap2];
pdb = [0 -5 -10];
chan = rayleighchan( TsFdtaupdb);
pi=3.14159;
SNR=20;
SigQam16 = [sqrt(10)+sqrt(10)*1i;sqrt(10)+3*sqrt(10)*1i;3*sqrt(10)+sqrt(10)*1i;3*sqrt(10)+3*sqrt(10)*1i
sqrt(10)-sqrt(10)*1i;sqrt(10)-3*sqrt(10)*1i;3*sqrt(10)-sqrt(10)*1i;3*sqrt(10)-3*sqrt(10)*1i;
-sqrt(10)+sqrt(10)*1i;-sqrt(10)+3*sqrt(10)*1i;-3*sqrt(10)+sqrt(10)*1i;-3*sqrt(10)+3*sqrt(10)*1i;
-sqrt(10)-sqrt(10)*1i;-sqrt(10)-3*sqrt(10)*1i;-3*sqrt(10)-sqrt(10)*1i;-3*sqrt(10)-3*sqrt(10)*1i]/10;
%随机产生600个Qam16的码元
GenSig=zeros(1600);
rand_idx=randint(1Nsym16)+1;
for sig_idx=1:Nsym
GenSig(sig_idx)=SigQam16(rand_idx(sig_idx));
end
%600个码元经过1024点IFFT产生待发送数据
xSig = ifft(GenSigNFFT);
% figure; plot (abs(xSig));
%产生的1024点采样点数据xSig经过瑞利信道传输
yb=filter(chanxSig);
Yb = fft(ybNFFT);
% 并且叠加awgn
awgn_noise = awgn(ybSNR‘measured‘);
%将加噪信号做FFT获得频域OFDM数据并且取前600点
Hawgn = fft(awgn_noiseNFFT);
% figure;plot(2*abs(Hawgn(1:NFFT/2+1)))
RecSig=Hawgn(1:600);
t=1:600;
% figure;plot(tabs(GenSig)tabs(RecSig)‘-*‘);
Hw=zeros(1600);
Hw1=zeros(1100);
Hwo=zeros(1100);
for idx_hw=0:99
Hw1(1+idx_hw)=RecSig(1+6*idx_hw)./GenSig(1+6*idx_hw);
end
for idx_hw=0:99
Hwo(1+idx_hw)=Yb(1+6*idx_hw)./GenSig(1+6*idx_hw);
end
Hwcor=autocorr(Hwo99);
Rh=Hwcor(11:100);
Rhh =toeplitz(Rh);
% Rhh=cov(Hw1*Hw1);
X=zeros(100100);
% N=100;
% t_max=4;trms=3;
for k=1:100 %Rhh与时延功率谱是傅立叶变换的关系 对信道建模后Rhh就得到了
for l=1:100
% Rhh(kl)=(1-exp((-1)*t_max*((1/trms)+1i*2*pi*(k-l)/N)))./(trms*(1-exp((-1)*t_max/trms))*((1/trms)+1i*2*pi*(k-l)/N));
if(k==l)
X(kl)=GenSig(k);
end
end
end
% Hlmmse=Rhh*inv(Rhh+0.01*inv(X*X‘))*conj(Hw1‘);
Hlmmse=Rhh*inv(Rhh+(1/(10^(SNR/10)))*inv(X*X‘))*conj(Hw1‘);
% Hlmmse=Rhh/(Rhh+17/9/SNR*eye(100))*conj(Hw1‘);
Hw2=conj(Hlmmse‘);
Hw26=zeros(1600);
Hw16=zeros(1600);
for idx_hw=0:99
Hw26(1+6*idx_hw)=Hw2(1+idx_hw);
Hw16(1+6*idx_hw)=Hw1(1+idx_hw);
end
for hwrec_idx=0:98
for insc_idx=1:5
Hw26(hwrec_idx*6+1+insc_idx)=Hw26(hwrec_idx*6+1)+insc_idx.*(Hw26((hwrec_idx+1)*6+1)-Hw26(hwrec_idx*6+1))./6;
Hw16(hwrec_idx*6+1+insc_idx)=Hw16(hwrec_idx*6+1)+insc_idx.*(Hw16((hwrec_idx+1)*6+1)-Hw16(hwrec_idx*6+1))./6;
end
end
RecSigeq=RecSig.*conj(Hw26)./(Hw26.*conj(Hw26));
temp_real=real(RecSigeq);
temp_imag=imag(RecSigeq);
figure; plot(temp_realtemp_imag‘.‘);
axis([-1.5 1.5 -1.5 1.5]);
RecSigeq1=RecSig.*conj(Hw16)./(Hw16.*conj(Hw16));
temp_real1=real(RecSigeq1);
temp_imag1=imag(RecSigeq1);
figure; plot(temp_real1temp_imag1‘.‘);
axis([-1.5 1.5 -1.5 1.5]);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3247 2018-08-30 08:27 使用matlab的OFDM导频ls lmmse信道估计\a.m
文件 55 2018-08-27 11:33 使用matlab的OFDM导频ls lmmse信道估计\【源码使用必读】.url
目录 0 2018-08-30 08:52 使用matlab的OFDM导频ls lmmse信道估计
----------- --------- ---------- ----- ----
3302 3
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论