资源简介
使用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的车牌识别,采用的是BP神经
- OFDM盲信道估计_基于子空间的盲信道估
-
使用MATLAB 2014a的Simuli
nk搭建的太阳能 - 灰色预测模型 MATLAB实现含具体数据
- 异步电机运行MATLAB仿真
- matlab函数大全
- ISARMATLAB仿真程序
- 基于matlab的车辆分类(更改图片集的
- 基于NSGAII多目标优化Matlab代码.zip
- matlab 矩阵增加一行或一列。
- Tikhonov正则化MATLAB程序
- 基于matlab的信号调频仿真
- 利用DOG算子实现图像特征提取中的角
- NSGA-II快速非支配排序遗传算法
- DCT、DWT数字水印技术-matlab代码183640
- pegasis+leachvsdeec
- matlab变分模态分解VMD
- 随机森林回归matlab代码
- QPSK与OQPSK数字调制方式MATLAB代码
- 计算光谱夹角的matlab代码,内有注释
- matlab实现人工鱼群算法测试函数
- 熵权法求权重 matlab程序
- 自动控制原理课程设计--用MATLAB进行控
- MD5算法_matlab版
- 多AUV目标搜素与围捕.zip
- 基于DS证据理论的信息融合代码
- 变分模态分解matlab
- 六种数字调制信号识别的matlab程序
- 滤波反投影fbp算法matlab
- 电弧炉MATLAB模型
评论
共有 条评论