资源简介
信道估计的MATLAB仿真,其中分别给出基于导频的了MMSE估计和LS估计。

代码片段和文件信息
%channel_estimation.m
%采用线性/样条插值的LS/DFT信道估计
clear allclose allclf
addpath(‘E:\matlab\channel estimation‘)
Nfft=32;
Ng=Nfft/8;
Nofdm=Nfft+Ng;
Nsym=100;
Nps=4;%导频间隔
Np=Nfft/Nps;%每个OFDM符号的导频数
Nbps=4;
M=2^Nbps;%每个调制符号的比特数
mod_object=modem.qammod(‘M‘M‘SymbolOrder‘‘gray‘);
demod_object=modem.qamdemod(‘M‘M‘SymbolOrder‘‘gray‘);
Es=1;%信号能量
A=sqrt(3/2/(M-1)*Es);%QAM归一因子
SNR=30;
sq2=sqrt(2);
rand(‘seed‘1);
randn(‘seed‘1);
MSE=zeros(16);
nose=0;
for nsym=1:Nsym
Xp=2*(randn(1Np)>0)-1;% 生成导频序列
msgint=randint(1Nfft-NpM);%比特生成
Data=A*modulate(mod_objectmsgint);
ip=0;
pilot_loc=[];
for k=1:Nfft
if mod(kNps)==1
X(k)=Xp(floor(k/Nps)+1);
pilot_loc=[pilot_loc k];
ip=ip+1;
else
X(k)=Data(k-ip);
end
end
x=ifft(XNfft);%IFFT
xt=[x(Nfft-Ng+1:Nfft) x];%加CP
h=[(randn+j*randn) (randn+j*randn)/2];%产生一个2抽头信道
H=fft(hNfft);channel_length=length(h);%实际信道和它的长度
H_power_dB=10*log10(abs(H.*conj(H)));%实际信道功率[dB]
y_channel=conv(xth);%信道路径卷积
yt=awgn(y_channelSNR‘measured‘);%加入噪声
y=yt(Ng+1:Nofdm);%去CP
Y=fft(y);
for m=1:3
if m==1
%线性插值的LS估计
H_est=LS_CE(YXppilot_locNfftNps‘linear‘);
method=‘LS-linear‘;
elseif m==2
%样条插值的LS估计
H_est=LS_CE(YXppilot_locNfftNps‘spline‘);
method=‘LS-spline‘;
else
%MMSE估计
H_est=MMSE_CE(YXppilot_locNfftNpshSNR);
method=‘MMSE‘;
end
H_est_power_dB=10*log10(abs(H_est.*conj(H_est)));
h_est=ifft(H_est);
h_DFT=h_est(1:channel_length);
H_DFT=fft(h_DFTNfft);%基于DFT的信道估计
H_DFT_power_dB=10*log10(abs(H_DFT.*conj(H_DFT)));
if nsym==1
subplot(319+2*m)
plot(H_power_dB‘b‘‘linewidth‘1)
grid onhold on
plot(H_est_power_dB‘r:+‘‘Markersize‘4‘linewidth‘1);
axis([0 32 -6 10])
xlabel(‘Subcarrier Index‘)
ylabel(‘Power[dB]‘)
legend(‘True Chanel‘method4)
set(gca‘fontsize‘9)
subplot(320+2*m)
plot(H_power_dB‘b‘‘linewidth‘1)
grid onhold on
plot(H_DFT_power_dB‘r:+‘‘Markersize‘4‘linewidth‘1);
axis([0 32 -6 10])
xlabel(‘Subcarrier Index‘)
ylabel(‘Power[dB]‘)
legend(‘True Chanel‘method4)
set(gca‘fontsize‘9)
end
MSE(m)=MSE(m)+(H-H_est)*(H-H_est)‘;
MSE(m+3)=MSE(m+3)+(H-H_est)*(H-H_est)‘;
end
Y_eq=Y./H_est;
if nsym>=Nsym-10
figure(2)subplot(221)
plot(Y‘.‘‘Markersize‘5)
axis([-1.5 1.5 -1.5 1.5])
set(gca‘fontsize‘9)
hold on
subplot(222)
plot(Y_eq‘.‘‘Markersize‘5)
axis([-1.5 1.5 -1.5 1.5])
set(gca‘fontsize‘9)
end
ip=0;
for k=1:Nfft
if mod(kNps)==1
ip=ip+1;
else
Data_extracted(k-ip)=Y_eq(k);
end
end
msg_detected=demodulate(demod_objectData_extracted/A);
nose=nose+sum(msg_detected~=msgint);
MSEs=MSE/(Nfft*Nsym);
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 452 2014-11-27 15:09 channel estimation\LS_CE.m
文件 805 2014-11-27 15:18 channel estimation\MMSE_CE.m
文件 3257 2014-11-27 15:20 channel estimation\channel_estimation.m
文件 778 2014-11-27 15:16 channel estimation\interpolate.m
目录 0 2014-11-27 15:24 channel estimation\
- 上一篇:最小二乘法辨识
- 下一篇:基于单纯形法的PID控制器参数优化设计
相关资源
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 阵列天线的matlab仿真
- 天线阵的波束形成在MATLAB仿真程序及
- OFDM系统MATLAB仿真代码
- CRC循环冗余校验的matlab仿真程序
- (7,4)循环码-信道编码的matlab仿真
- MIMO雷达DOA估计中的克拉美罗界计算
- Boost电路的MATLAB仿真
- 基于气动力的导弹姿态控制(附MATL
- 有源电力滤波器的Matlab仿真_高勇
- 3点GPS定位MATLAB仿真
- 一维光子晶体MATLAB仿真代码吸收率折
- 清洁机器人路径规划matlab仿真程序
- 基于倒谱图判断浊音的基音周期MATL
- 粒子群算法优化pid源码 matlab仿真.ra
- 小卫星多普勒频偏MATLAB仿真程序及参
- 基于Matlab的OFDM系统仿真的设计
- 《MATLAB仿真在现代通信中的应用》徐
- 自抗扰控制ADRC的MATLAB仿真+书籍资料
- Ldpc编译码方案MATLAB仿真
- 基于模型预测控制的车辆轨迹跟踪问
- 合成孔径雷达成像csChirp Scaling算法M
- 冲击电压发生器MATLAB仿真,主要是单
- 信道的MATLAB仿真
- 基于傅里叶叠层的图像重建算法matl
- 信息论大作业 LZ78算法编译码 matlab仿
- 跳频通信系统MATLAB仿真
- 机械臂SEA柔顺控制matlab仿真
- 群速度色散的matlab仿真
- 异步电机降压启动matlab仿真
评论
共有 条评论