WLAN室内无线信道特性分析及MATLAB仿真研究

1.软件版本

matlab2013b

2.本算法理论知识

1) 调研收集无线局域网WLAN的标准及其相关资料,熟悉WLAN的主要协议和仿真工具MATLAB。

2) 分析无线局域网WLAN中无线信道的大尺度衰落模型、小尺度衰落模型及其建模仿真方法,确定适用于室内环境的大尺度和小尺度衰落模型,设计仿真实验方法。

3) 确定无线局域网WLAN的室内无线信道大尺度和小尺度模型,利用MATLAB编程实现WLAN的室内无线信道的大尺度和小尺度模型的仿真。

4) 对不同码率的系统性能进行仿真比较,完成WLAN的IEEE802.11a、802.11b、802.11g和802.11n的仿真比较研究。

其中无线局域网室内信道的大尺度衰落主要包括自由空间衰落和阴影衰落。在本文中采用适合于建筑物内信道的马特内-马恩纳模型

【WLAN】WLAN室内无线信道模型分析及matlab仿真_5e

n为路径损耗指数,为第一米路径损耗,为墙壁衰减因子,为该种类型墙壁数量,为楼层衰减因子,为该种楼层数量,x为距离,单位m。

两个用于描述平坦衰落信道的基本模型为Clarke信道模型和Suzuki信道模型。Clarke信道模型用瑞利衰落信道来描述平坦小尺度衰落的统计模型,它的信号接收场强的统计特性是基于散射的,适合于市区无直射通路的环境。Suzuki信道模型将小尺度衰落模型和大尺度传播模型相结合,得到的一个混合模型,即在瑞利信道的基础上考虑了阴影效应。用它来仿真平坦衰落信道,意义更为重要。

先对平坦衰落信道进行建模然后对多个平坦衰落信道做延时叠加,得到频率选择性信道。所有的信道模型仿真都基于多个不相关的有色高斯随机过程。产生有色高斯随机过程的方法有两类:正弦波叠加法(SOS:Sum-Of-Sinusoid)和成形滤波器法。正弦波叠加法是基于无穷个加权谐波的叠加,即:

【WLAN】WLAN室内无线信道模型分析及matlab仿真_5e_02


【WLAN】WLAN室内无线信道模型分析及matlab仿真_matlab_03

,这样使频率成为连续分布的。若用有限个谐波来代替无限个谐波,则随机过程表示为

【WLAN】WLAN室内无线信道模型分析及matlab仿真_开发语言_04


【WLAN】WLAN室内无线信道模型分析及matlab仿真_开发语言_05

3.部分源码

clc;clear;close all;warning off;addpath 'func\'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Radius             = 100; Nh                 = 20;  Nv                 = 20;  %天线间距Scale1             = round(100*(rand(Nh,1)/2+0.5))/100; Scale2             = round(100*(rand(Nv,1)/2+0.5))/100; %是否加入多径,多径信道H1%速度v                  = 200;%载波频率fc                 = 83.5e6;%光速c                  = 3e8;fd                 = v*fc/c;%采样间隔为1ustimeval            = 1e-5;%多径时延delay_multi        = [0,1,3,6]*timeval;%多径增益Pow_avg            = [0,-20,-40,-60];%多径个数Nmultipath         = length(Pow_avg);%多径平均延迟delay_avg          = 100e-6; %多普勒频偏Fre_offset         = 0.0001; %发送功率sendpower          = 800;%mW%传输距离md_                 = 10;     %穿过的墙壁损耗列向量dbw_                 = [0]  ;           %穿过的地板损耗列向量dbf_                 = [0] ;                     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Nc                 = 8;Sub                = Nc;Len                = 1024;%信号带宽BW                 = 83.5e3;T                  = 1/BW;TG                 = T/4;%间隔BWs                = 3.75e3;%信号采样率Fd                 = 8;SNR_dB             = [0:8];%仿真指标保持变量Err_Rate           = zeros(1,length(SNR_dB));%PILOT设置pilot_type         = 1;%仿真循环次数,循环次数越大,仿真效果越好nloop              = [40,40,40,40,40,60,60,100,100];   %turbo编码参数N                  = 512;M                  = 167;%FFTfftlen             = 512;%每个SNR点上仿真若干次for i=1:length(SNR_dB)     i    Error   = 0;      err_all = 0;    for iii=1:nloop(i)        iii        rng(iii);       %%        %以单天线方式产生测试信号        msg                            = rand(Len*Nc/4,1)>=0.5;        %turbo编码        seridata1                      = func_turbo_code(msg,N,M);        seridata                       = [seridata1,zeros(1,Len*Nc-length(seridata1))]';        %QPSK映射        [Qpsk0,Dqpsk_pilot,symbol_bit] = func_piQPSK_mod(seridata);        %变换为矩阵           Qpsk_matrix                    = reshape(Qpsk0,fftlen,Nc);        [Pilot_in,pilot_num,Pilot_seq,pilot_space] = func_insert_pilot(Dqpsk_pilot,Qpsk_matrix,pilot_type,T,TG);        Pilot_in                       = fft(Pilot_in);        %sub carrier mapping        Pilot_in                       = func_subcarrierMap(Pilot_in);         %IFFT transform,产生OFDM信号        ifft_out                       = ifft(Pilot_in);        %插入包含间隔             Guard_int                      = ceil(BWs/fftlen);          Guard_int_ofdm                 = func_guard_interval_insert(ifft_out,fftlen,Guard_int);        %将矩阵数据转换为串行进行输出        Guard_int_ofdm_out             = reshape(Guard_int_ofdm,1,(fftlen+Guard_int)*(Nc+pilot_num));               %%        [Hm,Hmmatrix]            = func_mychannels(Radius,Scale1,Scale2,Nh,Nv);               %Step2:多径参数        [passchan_ofdm_symbol]   = func_conv_channels(Hmmatrix,Guard_int_ofdm_out,Nmultipath,Pow_avg,delay_multi,Fre_offset,timeval,iii);        %Step3:噪声信道         %大尺度衰落        receivepower             = func_largefade(sendpower,d_,w_,f_);        snr                      = 10^(SNR_dB(i)/10);        sgma                     = sqrt(receivepower*timeval/(2*snr)/2);        Rec_ofdm_symbol          = awgn(passchan_ofdm_symbol,SNR_dB(i),'measured');        Rec_ofdm_symbol          = Rec_ofdm_symbol + normrnd(0,sgma,size(Rec_ofdm_symbol));       %%        %开始接收        Guard_int_remove = func_guard_interval_remove(Rec_ofdm_symbol,(fftlen+Guard_int),Guard_int,(Nc+pilot_num));        %FFT        fft_out          = fft(Guard_int_remove);        %sub carrier demapping        fft_out          = func_desubcarrierMap(fft_out);        fft_out          = ifft(fft_out);        %信道估计        %ls        [Sig_Lrmmse,Hs]  = func_ls_estimation(fft_out,pilot_space,Pilot_seq,pilot_num);        %解调        Dqpsk            = func_pideMapping(Sig_Lrmmse,fftlen*Nc);        %turbo解码        Dqpsk_decode     = [func_turbo_decode(2*Dqpsk(1:end-(Len*Nc-length(seridata1)))-1,N,M)]';        %计算误码率        err_num          = Len*Nc/4-length(find(msg==Dqpsk_decode(1:Len*Nc/4)));        Error            = Error + err_num;    end    %计算误码率    err_all       = err_all+Len*Nc/4;    Err_Rate(i)   = Error/err_all/nloop(i);end%误码率figuresemilogy(SNR_dB,Err_Rate,'b-o');grid onxlabel('SNR');ylabel('BER');axis([-0.0001,8,1e-5,1]);save R802_11b.mat SNR_dB Err_Rate1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.120.121.122.123.124.125.126.127.128.129.130.131.132.133.134.135.136.137.138.139.140.141.

4.仿真分析

【WLAN】WLAN室内无线信道模型分析及matlab仿真_5e_06


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利