谁能告诉我这个matlab程序的详细意思,要求每一段都要注释?

全部清除;

clc

N _ ofdm = 2048%OFDM的点数是2048。

f _ delta = 15 E3;%子载波间隔是15k,在码中实际上没有使用。

n _ block = 1000;%最大模拟量

n _ subcarrier = 1320;可用子载波的数量百分比

n _ CP = 144;%CP长度

symbol _ number = 14;每次传输的OFDM符号数百分比

conv _波利=;%卷积码生成多项式

k = 5;%卷积码约束长度

trel=poly2trellis(K,conv _ poly);%生成卷积码网格图

tail = 0(1,K-1);添加%尾比特以使卷积码编码器归零

mod _ degree = 4;%16QAM调制

code _ rate = 0.5%码率

tb _ len = 50%维特比解码器的回溯长度

bit _ length = mod _ degree * code _ rate * N _ subcarrier * Symbol _ number-K+1;%根据上述参数配置,可以得到一个数据块可以承载的信息比特总数。

SNR _ db = 0:1:10;%设置模拟信噪比范围。

信噪比=10。^(snr_db/10);%将信噪比转换为自然值。

ber =零(1,长度(SNR));%初始化错误率存储空间

bler =零(1,长度(SNR));%初始化错误率存储空间

h1=modem.qammod('m',2^mod_degree,'inputtype','bit','symoblorder','gray');%生成QAM调制对象,输入类型为比特输入,符号顺序为格雷映射。

h2=modem.qamdemod(h1,' OutputType ',' bit ',' DecisionType ',' approximatellr ',...NoiseVariance ',1);%产生QAM解调对象,并选择软判决解调形式。因为此时的噪声方差位置,暂时设为1。

对于loop_snr=1:长度(snr)

err = 0;

err _ blk = 0;

sigma = sqrt(1/SNR(loop _ SNR)/2);

对于loop_block=1:N_block%这里省略的代码是每个数据帧的处理过程,下面将详细描述。

结束

ber(loop _ SNR)= err/(bit _ length * loop _ block);

bler(loop _ SNR)= err _ blk/loop _ block;

结束

for循环块=1:N块

source=randsrc(1,bit_length,[0,1]);%生成的源

code=convenc([source,tail],trel);%卷积编码,状态归零

symbol=modulate(h1,code’);%代码序列用调制对象h1进行调制。

符号=符号/3.1622;%子载波符号能量的归一化

transmit _ data =零(1,Symbol _ number *(N _ CP+N _ OFDM));%发送时域样本初始化

for loop _ symbol = 1:symbol _ % OFDM符号周期,每个周期生成一个OFDM符号的所有时域样本。

freq_domain=zeros(1,N _ OFDM);%频域数据初始化

freq _ domain((N _ OFDM-N _ subcarrier)/2+1:(N _ OFDM-Nsubcarrier)/2+N _ subcarrier)= symbol((loop _ symbol-1)* N _ subcarrier+1:loop _ symbol * N _ subcarrier);%子载波映射,映射在中间的N_subcarrier子载波上。

time _ domain = IFFT(freq _ domain)* sqrt(N _ OFDM);%IFFT是实现OFDM调制,并且注重能量归一化。

transmit _ data((loop _ symbol-1)*(N _ CP+N _ OFDM)+1:loop _ symbol *(N _ CP+N _ OFDM))=[time _ domain(N _ OFDM-N _ CP+1:N _ OFDM),time _ domain];%加CP

结束

received _ data = transmit _ data+(randn(1,长度(transmit-data))+j * randn(1,长度(transmit _ data)))* sigma;%加噪声,得到可接受的信号。

for循环符号=1:符号编号

de _ CP = received _ data((loop _ symbol-1)*(N _ CP+N _ OFDM)+N _ CP+1:loop _ symbol *(N _ CP+N _ OFDM));%删除CP

FFT _ data = FFT(de _ CP)/sqrt(N _ OFDM);%FFT,能量归一化

de mapp _ data((loop _ symbol-1)* N _ subcarrier+1:loop _ symbol * N _ subcarrier)= FFT _ data((N _ OFDM-N _ subcarrier)/2+1:(N _ OFDM-N _ subcarrier)/2+N _ subcarrier);%解映射

结束

h2。noise variance = sigma * sigma * 3.1622 * 3.1622;%重置解调对象的噪声方差参数。

data _解调=解调制(h2,de mapp _ data * 3.1622);%软解调,注意解调前需要根据解调对象的要求把信号变回原来的星座。

temp 1 = size(data _解调);

data _解调=reshape(data_demudulated,1,templ(1)* templ(2));%将软解调输入的矩阵排列成行向量。

decision = vit dex(data _解调,trel,tb_len,' term ',' un quant ');具有%去量化量化的维特比解码

决策=决策(1:长度(来源));%删节位

err=err+sum(决策~ =来源);%统计错误数

If(sum(decision~=source)~=0)%统计错误块数。

err _ blk+err _ blk+1;

结束

if(err _ blk & gt;=10)%错误10块停止该信噪比下的仿真。

打破;

结束

结束

semilogy(SNR_dB,ber,'-^')

网格打开

xlabel(' SNR(dB)');

ylable(' BER ');