资源简介
信道估计的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控制器参数优化设计
相关资源
- 质心定位算法MATLAB仿真
- 电压骤降MATLAB仿真函数
- 降低OFDM峰均比的matlab仿真
- 循环码的matlab仿真
- 图像缩放,用MATLAB仿真,经典图像缩
- 光纤通信系统的Matlab仿真
- 机器人避障的matlab仿真
- 无线传感网节点定位目标定位matlab仿
- UPS的matlab仿真
- matlab仿真实现MSK
- [网盘]卡尔曼滤波原理及应用MATLAB仿真
- 信号的捕获(直接序列扩频系统的m
- BPSK扩频误码率曲线MATLAB仿真
- 各种体制雷达信号MATLAB仿真
- zw_滑模变结构控制MATLAB仿真(第2版)
- pmsm双闭环PI模型,可运行
- 微穿孔板吸声系数MATLAB仿真代码
- zw_16QAM信号调制解调Matlab仿真.zip
- Lorenz系统和Chua系统MATLAB仿真
- 雷达系统设计MATLAB仿真.zip
- 电力电子AC-DC整流MATLAB仿真.rar
- 直流电机转速闭环PI调节电机模型ma
- 模型参考自适应MATLAB仿真程序
- 公共汽车悬挂系统模型的MATLAB仿真程
- 基于电力电子变压器并联运行动态的
- 滑膜结构控制matlab仿真及程序
- 基于卡尔曼滤波算法的主从时钟同步
- 多机器人编队控制matlab仿真程序
- 基于查表发的电动汽车用永磁同步电
- matlab仿真UR5机器人动作
评论
共有 条评论