基于导频的ofdm系统的信道估计程序
更新时间:2024-05-03 21:50:01 阅读量: 综合文库 文档下载
clear all; close all;
fprintf('OFDM信道估计仿真\\n\\n'); carrier_count=64;%-----------载波数目
num_symbol=50;%--------------OFDM符号个数 Guard=8;%--------------------循环前缀 pilot_Inter=8;%--------------导频间隔 modulation_mode=16;%---------调制方式 SNR=[0:2:20];%-------------信噪比取值 NumLoop=15;%-----------------循环次数 num_bit_err=zeros(length(SNR),NumLoop); num_bit_err_dft=zeros(length(SNR),NumLoop); num_bit_err_ls=zeros(length(SNR),NumLoop); MSE=zeros(length(SNR),NumLoop); MSE1=zeros(length(SNR),NumLoop); MSE2=zeros(length(SNR),NumLoop);
%%%%%%%%%%%%%%%%%%%%%%%主程序环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for c1=1:length(SNR)
fprintf('\\n\\n\\n仿真信噪比为%f\\n\\n',SNR(c1)); for num1=1:NumLoop
%---------------产生发送的随机序列——————————————- BitsLen=carrier_count*num_symbol; BitsTx=randint(1,BitsLen);
%---------------符号调制--------------------------------------- Modulated_Sequence=qammod(BitsTx,modulation_mode); %---------------导频格式--------------------------------------- pilot_len=carrier_count;
pilot_symbols=round(rand(1,pilot_len)); for i=1:pilot_len
if pilot_symbols(1,i)==0
pilot_symbols(1,i)=pilot_symbols(1,i)-1; else
pilot_symbols(1,i)=pilot_symbols(1,i); end end
pilot_symbols=pilot_symbols';
%----------------计算导频和数据数目---------------------------- num_pilot=ceil(num_symbol/pilot_Inter); if rem(num_symbol,pilot_Inter)==0 num_pilot=num_pilot+1; end
num_data=num_symbol+num_pilot;
%----------------导频位置计算----------------------------------
循
pilot_Indx=zeros(1,num_pilot);
Data_Indx=zeros(1,num_pilot*(pilot_Inter+1)); for i=1:num_pilot-1
pilot_Indx(1,i)=(i-1)*(pilot_Inter+1)+1; end
pilot_Indx(1,num_pilot)=num_data; for j=0:num_pilot
Data_Indx(1,(1+j*pilot_Inter):(j+1)*pilot_Inter)=(2+j*(pilot_Inter+1)):((j+1)*(pilot_Inter+1)); end
Data_Indx=Data_Indx(1,1:num_symbol);
%----------------导频插入------------------------------------- piloted_ofdm_syms=zeros(carrier_count,num_data);
piloted_ofdm_syms(:,Data_Indx)=reshape(Modulated_Sequence,carrier_count,num_symbol); piloted_ofdm_syms(:,pilot_Indx)=repmat(pilot_symbols,1,num_pilot); %----------------IFFT变换——————————————————— time_signal=sqrt(carrier_count)*ifft(piloted_ofdm_syms); %----------------加循环前缀------------------------------------
add_cyclic_signal=[time_signal((carrier_count-Guard+1:carrier_count),:);time_signal]; Tx_data_trans=reshape(add_cyclic_signal,1,(carrier_count+Guard)*num_data); %----------------信道处理--------------------------------------
Tx_signal_power=sum(abs(Tx_data_trans(:)).^2)/length(Tx_data_trans(:)); noise_var=Tx_signal_power/(10^(SNR(c1)/10)); Rx_data=awgn(Tx_data_trans,SNR(c1),'measured');
%----------------信号接收、去循环前缀、FFT变换----------------- Rx_signal=reshape(Rx_data,(carrier_count+Guard),num_data); Rx_signal_matrix=zeros(carrier_count,num_data); Rx_signal_matrix=Rx_signal(Guard+1:end,:);
Rx_carriers=fft(Rx_signal_matrix)/sqrt(carrier_count); %----------------导频和数据提取-------------------------------- Rx_pilot=Rx_carriers(:,pilot_Indx); Rx_fre_data=Rx_carriers(:,Data_Indx);
%----------------导频位置信道响应LS估计------------------------
pilot_patt=repmat(pilot_symbols,1,num_pilot); pilot_esti=Rx_pilot./pilot_patt;
%----------------LS估计的线性插值——————————————— int_len=pilot_Indx; len=1:num_data; for ii=1:carrier_count
channel_H_ls(ii,:)=interp1(int_len,pilot_esti(ii,1:(num_pilot)),len,'linear'); end
channel_H_data_ls=channel_H_ls(:,Data_Indx);
%----------------LS估计中发送数据的估计值----------------------
Tx_data_estimate_ls=Rx_fre_data.*conj(channel_H_data_ls)./(abs(channel_H_data_ls).^2); %----------------DFT估计-------------------------------------- Tx_pilot_estimate_ifft=ifft(pilot_esti); padding_zero=zeros(1024,7);
Tx_pilot_estimate_ifft_padding_zero=[Tx_pilot_estimate_ifft;padding_zero]; Tx_pilot_estimate_dft=fft(Tx_pilot_estimate_ifft_padding_zero);
%----------------DFT估计的线性插值——————————————— int_len=pilot_Indx; len=1:num_data; for ii=1:carrier_count
channel_H_dft(ii,:)=interp1(int_len,Tx_pilot_estimate_dft(ii,1:(num_pilot)),len,'linear'); end
channel_H_data_dft=channel_H_dft(:,Data_Indx);
%----------------DFT估计中发送数据的估计值----------------------
Tx_data_estimate_dft=Rx_fre_data.*conj(channel_H_data_dft)./(abs(channel_H_data_dft).^2); %----------------DFT符号解调------------------------------------ demod_in_dft=Tx_data_estimate_dft(:).';
demod_out_dft=qamdemod(demod_in_dft,modulation_mode); %----------------LS符号解调------------------------------------ demod_in_ls=Tx_data_estimate_ls(:).';
demod_out_ls=qamdemod(demod_in_ls,modulation_mode); %----------------误码率的计算---------------------------------- for i=1:length(BitsTx)
if demod_out_dft(i)~=BitsTx(i)
num_bit_err_dft(c1,num1)=num_bit_err_dft(c1,num1)+1; end
if demod_out_ls(i)~=BitsTx(i)
num_bit_err_ls(c1,num1)=num_bit_err_ls(c1,num1)+1; end end end end
BER_dft=mean(num_bit_err_dft.')/length(BitsTx); BER_ls=mean(num_bit_err_ls.')/length(BitsTx);
%%%%%%%%%%%%%%%%%%%a%%%%%%%%主程序循环换结束%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure
semilogy(SNR,BER_dft,'-mp',SNR,BER_ls,'-k+'); title('OFDM系统的LS和DFT信道估计'); xlabel('SNR'),ylabel('BER')
legend('LS信道估计','DFT信道估计');
正在阅读:
基于导频的ofdm系统的信道估计程序05-03
东莞明年可实现用网络和手机投票选处业委会04-16
高二数学月考试卷(含答案) - 图文07-06
实验动物学复习资料04-13
新人教A版高中数学(必修1)3.2《古典概型》word教案12-03
立体几何三视图习题12-23
2016-2020年中国电磁炉行业发展与投资机会分析报告(目录) - 图06-05
中国旅游地理练习题10-13
66大寿祝寿词02-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 信道
- 估计
- 基于
- 程序
- 系统
- ofdm
- 诚信库申报操作手册
- 陈青来讲解平法钢筋
- 2016-2021年中国太阳能市场前景展望分析及竞争格局预测研发报告
- 生物技术综合试验终稿
- c语言程序基础练习题500道(附答案)
- 校园招聘数字电路,模拟电路类常用笔试题
- 青岛市2015年中考模拟试卷 - 图文
- 《微机原理与嵌入式系统基础--练习_答案》1
- 新人教版语文七年级下册第四单元第20课《口技》名师教学设计
- 大班科学小磁铁的大本领教学设计
- 第15期中国企业家特训班名录
- 义乌市场的发展现状存在问题及对策分析
- 2016-2021年中国及全球红外探测报警器行业市场发展战略分析及投
- 初二语文知识竞赛试题
- 2001年全国高中数学联赛试卷及答案
- 行政执法文书制作基本要求
- 2015届高考数学(人教通用,理科)必考题型过关练:函数与导数第18
- 会计习题(附答案)
- 2010年普通高等学校招生全国统一考试(江苏卷)化学
- 广东海洋大学海洋资源学复习题