【信道估计】LS算法OFDM系统频域信道估计【含Matlab源码 3931期】

在这里插入图片描述

⛄一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【信道估计】基于matlab LS算法OFDM系统频域信道估计【含Matlab源码 3931期】
点击上面蓝色字体,直接付费下载,即可。

获取代码方式2:
付费专栏Matlab信号处理(初级版)

备注:
点击上面蓝色字体付费专栏Matlab信号处理(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab信号处理(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码

⛄二、部分源代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%此函数完成功能 利用LS算法对OFDM系统进行频域信道估计
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%64个载波,子载波间隔为1.25MHZ,带宽共为80MHZ,积分周期为0.8e-6s.采样时间间隔为0.0125e-6s.数据进行QPSK调制
%仿真环境为准静态,没有直达径且为瑞利分布环境
%
clear,clc;

N=64; %子载波个数
profix=16; %循环前缀共16个点
L=1; %多径数目
N_OFDM=400; %一帧数据所包含的OFDM符号数
N_location=16; %一帧数据内插入导频的位置
SNR_DB=[0 2 4 6 8 10 14 18 20 25 40]; %信躁比
N_SIMULINK=10; %仿真次数

MMSE_average_error=zeros(1,length(SNR_DB)); %用以储平均误
for j=1:N_SIMULINK

%**************************************************
%generate data
%**************************************************
OFDM_original_data=zeros(1,N_OFDM*N); %用以存储400个OFDM符号的QPSK基带调制信号
OFDM_pilot_data=zeros(1,N); %用以存储一个OFDM符号的导频信号,此处对导频符号的设计没有特殊的要求
OFDM_data=zeros(64,N_OFDM);

OFDM_original_data=(-1).round(rand(1,N_OFDM*N))+i*(-1).round(rand(1,N_OFDMN));%产生40064个QPSK基带调制信号
OFDM_pilot_data=(-1).round(rand(1,N))+i*(-1).round(rand(1,N)); %产生64个QPSK基带调制信号

OFDM_data=reshape(OFDM_original_data,N,N_OFDM); %将数据转换成64X400的形式
OFDM_data(:,1)=OFDM_pilot_data.'; %将导频插入
OFDM_ifft_data=ifft(OFDM_data,N,1); %对每个OFDM信号做IFFT
RowPrefix = (N - profix + 1):N; %产生49到64的序列
OFDM_addprofix_data = [OFDM_ifft_data(RowPrefix,:);OFDM_ifft_data]; %将后16行放在新数组的最前16行
OFDM_out1_data=reshape(OFDM_addprofix_data,1,N_OFDM*(N +profix)); %将数据进行并串转换

%*********************************************
%产生时域冲击响应序列 注意:仿真时模拟的是准静态信道,每条径的幅度服从瑞利分布,时延不超过profix
%*********************************************
h=abs(randn(1,L)+i*randn(1,L)); %产生第4条径的幅度,此处可以通过调节多径时延
H_original=fft(h,N); %计算出频域冲击响应

OFDM_out2_data=conv(OFDM_out1_data,h); %发送信号与冲击响应函数相卷积
OFDM_out3_data=OFDM_out2_data(1,1:N_OFDM*(N +profix)); %取信号的前400*80个元素
%**************************************************
%进行加噪处理和Channel estimation
%**************************************************
k_length=length(SNR_DB); %计算出信躁比取值个数
MMSE_error=zeros(1,k_length);

for k=1:k_length

    OFDM_out_data=awgn(OFDM_out3_data,SNR_DB(k),'measured');                  %按照信躁比加入噪声

    OFDM_modulate_data=reshape(OFDM_out_data,(N +profix),N_OFDM);              %将接受信号进行串并转换
    OFDM_modulate1_data=OFDM_modulate_data((profix+1):(profix+N),:);            %去掉循环前缀
    OFDM_fft_data=fft(OFDM_modulate1_data,N,1);                                  %进行fft变换将数据变换到频域

    %*************************
    %Channel estimation ***LS
    %*************************
    H_estimation=(OFDM_fft_data(:,1)).'./OFDM_pilot_data;                         %进行LS频域估计 ....此处是有问题的,并未考虑能量守恒

    MMSE_error(k)=sum(abs(H_estimation-H_original).^2)/sum(abs(H_original).^2) ; %计算MMSE误差

end

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]焦明伟,贾振红,覃锡忠,李涛,赵君凯.改进LMS在低压电力线OFDM信道估计中的应用[J].计算机工程与应用. 2010,46(34)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值