m基于matlab的光通信的信道估計,均衡,抑制papr誤碼率仿真,對比ZF,RLS,MMSE三種算法

1.算法描述

可見光通信的信道估計,均衡,抑制papr。


不考慮光信道,用傳統(tǒng)的無線通信的OFDM的信道估計,均衡,抑制papr ?信道估計,均衡最好有兩個以上的方法比較


%本次仿真載頻為2GHz,帶寬1MHz,子載波數(shù)128個,cp為16

%子載波間隔為7.8125kHz

%一個ofdm符號長度為128us,cp長度為16us

%采用16QAM調(diào)制方式

%最大doppler頻率為132Hz

%多徑信道為5徑,功率延遲譜服從負(fù)指數(shù)分布~exp(-t/trms),trms=(1/4)*cp時長,各徑延遲取為delay=[0 2e-6 4e-6 8e-6 12e-6]


Zero forcing, ZF:簡單,但放大了噪聲,性能最差


Minimum Mean Square Error, MMSE:考慮了噪聲因素,性能比ZF好


2.仿真效果預(yù)覽

matlab2022a仿真如下:


3.MATLAB核心程序

clc;

clear all;

close all;

warning off;

addpath 'func\'



sel ???= 3;

%FFT長度

FFTLen = 64;

%循環(huán)前綴長度

CPLen ?= 16;

%QAM

M ?????= 4;

%子載波個數(shù)

Ns ????= 8; ?

w ?????= ones(FFTLen,1);

SNRdB ?= [0:2:26];


for ii = 1:length(SNRdB)

ii

SNRS = SNRdB(ii);

NUM ?= 0;

ERR ?= 0;

while ERR <= 2000

ERR

NUM ?????????= NUM + 1;

store_input ?= zeros(Ns,FFTLen*M);

store_output = zeros(Ns,FFTLen*M);

store_error ?= zeros(Ns,FFTLen);


for sym=1:Ns

%發(fā)送數(shù)據(jù)

input ?????????????= rand(1,FFTLen*M) > 0.5;

store_input(sym,:) = input;

%發(fā)送

[signal_tx,input_symbols] = func_transmitter(input,FFTLen,CPLen,M);

%通過信道

signal_rx ????????????????= func_channel(signal_tx,SNRS);

%估計,均衡,

if sel == 1

[signal_recovered,w,error_sym] = func_receiver_mmse(signal_tx,signal_rx,input_symbols,FFTLen,CPLen,M,w);

end

if sel == 2

[signal_recovered,w,error_sym] = func_receiver_zf(signal_tx,signal_rx,input_symbols,FFTLen,CPLen,M,w);

end ??

if sel == 3

w = zeros(3,1);

[signal_recovered,w,error_sym] = func_receiver_rls(signal_tx, signal_rx, FFTLen, CPLen, M, w, 3);

end ???????????????


store_output(sym,:) ???????????= signal_recovered;

store_error(sym,:) ????????????= error_sym.';

end

errors_ext = abs(store_input - store_output);

errors ????= errors_ext(FFTLen+1:length(errors_ext));

num_errors = sum(sum(errors));

ERR ???????= ERR + num_errors;

end

BER(ii) = ERR/NUM/(FFTLen*M*(Ns-1));

end

% figure;

% semilogy(SNRdB,BER,'b-o');

% grid on;

% ylabel('Error');

% xlabel('SNR');


if sel == 1

save rmmse.mat SNRdB BER

end

if sel == 2

save rzf.mat SNRdB BER

end

if sel == 3

save rls.mat SNRdB BER

end


figure;

load rmmse.mat

semilogy(SNRdB,BER,'b-o');

hold on

load rzf.mat

semilogy(SNRdB,BER,'r-o');

hold on

load rls.mat

semilogy(SNRdB,BER,'k-o');

hold on

legend('MMSE','ZF','RLS');

grid on;

ylabel('Error');

xlabel('SNR');

01_099m

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容