✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
本文介绍了正交频分复用(OFDM)系统中常用的信道估计算 法:最小二乘(LS).
⛄ 完整代码
% in this Mfile, I want to investigate the performance of LSE algorithm in
% OFDM channel estimation
% initialize
clear
clc
% parameter definition
N = 256; % total number of subchannels
P = 256/8; % total number of Pilots
S = N-P; % totla number of data subchannels
GI = N/4; % guard interval length
M = 2; % modulation
pilotInterval = 8; % pilot position interval
L = 16; % channel length
nIteration = 500; % number of iteration in each evaluation
SNR_V = [0:3:27]; % signal to noise ratio vector in dB
ber = zeros(1,length(SNR_V)); % initializing bit error rate
% Pilot Location and strength
Ip = [1:pilotInterval:N]; % location of pilots
Is = setxor(1:N,Ip); % location of data
Ep = 2; % energy in pilot symbols in comparison
% to energy in data symbols
% fft matrix
F = exp(2*pi*sqrt(-1)/N .* meshgrid([0:N-1],[0:N-1])...
.* repmat([0:N-1]',[1,N]));
for( i = 1 : length(SNR_V))
SNR = SNR_V(i)
for(k = 1 : nIteration)
% generating random channel coefficients
h(1:L,1) = random('Normal',0,1,L,1) + ...
j * random('Normal',0,1,L,1);
h = h./sum(abs(h)); % normalization
% Tr Data
TrDataBit = randint(N,1,M);
TrDataMod = qammod(TrDataBit,M);
TrDataMod(Ip) = Ep * TrDataMod(Ip);
TrDataIfft = ifft(TrDataMod,N);
TrDataIfftGi = [TrDataIfft(N- GI + 1 : N);TrDataIfft];
% tx Data
TxDataIfftGi = filter(h,1,TrDataIfftGi); % channel effect
% adding awgn noise
TxDataIfftGiNoise = awgn(TxDataIfftGi ...
, SNR - db(std(TxDataIfftGi))); % normalization to signal power
TxDataIfft = TxDataIfftGiNoise(GI+1:N+GI);
TxDataMod = fft(TxDataIfft,N);
% Channel estimation
Spilot = TrDataMod(Ip); % trnasmitted pilots
Ypilot = TxDataMod(Ip); % received pilots
G = (Ep * length(Ip))^-1 ...
* ctranspose(sqrt(Ep)*diag(Spilot)*ctranspose(F(1:L,Ip)));
hHat = G*Ypilot; % estimated channel coefficient in time domain
TxDataBit = qamdemod(TxDataMod./(fft(hHat,N)),M);
% bit error rate computation
[nErr bErr(i,k)] = symerr(TxDataBit(Is),TrDataBit(Is));
end
end
f1 = figure(1);
set(f1,'color',[1 1 1]);
semilogy(SNR_V,mean(bErr'),'b->')
xlabel('SNR in dB');
ylabel('Bit Error Rate')
⛄ 运行结果
⛄ 参考文献
[1] 彭玲, 刘晓忠, 付杰,等. OFDM系统中基于导频的信道估计及其MATLAB仿真[J]. 井冈山学院学报, 2008(2期):47-49.
[2] 廉钰莹. 基于OFDM的电力线载波通信信道估计[D]. 吉林大学.
[3] 田志峰. 基于MATLAB环境下OFDM系统信道估计仿真[J]. 才智, 2012(23):1.
[4] 范佳佳. 基于Matlab的OFDM系统信道评估设计[D]. 东华大学, 2016.
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料