根据老师的安排,对于极化码的了解从仿真开始。
仿真的手段有很多种。可以利用C,C++,matlab等进行仿真的实现。其中matlab由于具有强大的函数库,和壮观的矩阵运算能力,被(我们老师课题组)看中了。
理由是,matlab的语法非常简单,接近自然语言。优秀的绘图能力,让其他软件自愧不如。还有众多的工具箱,功能强大到令人发指。当然非要用C来仿真也是可以的。但试想一个简单的函数,matlab只需要调用一下就好了,C语言怕是要自己动手写两行,何必自找麻烦呢。
话不多说,等下,我再说最后一句,本人研究水平不高,在描述很多问题的时候不能从较高的高度去剖析,表述难免有些肤浅,海涵 TvT|l'。
好了,话不多说。
matlab仿真极化码,第一步是要确定仿真的参数。都有哪些参数呢?
码块:block;
码长:N;
码率:R;
信噪比:SNR(dB)、snr;
大概就是这些了,解释一下。
block,码块,我的理解是“一次信息发送动作所传递的信息位数”,可能一个码块代表着一个具有完整意义的信息,因此码块不可分割发送。例如,一个码块相当于一篇文章。
N,码长,我的理解是“一个信息单元所占据的比特位数”,例如,如果码块是文章,码长就是文章中的一个个文字。
R,码率,就是有用信息占所传输信息的比例。在信息传输之中,为了能够提高传输准确性,常常在信息位中插入不具有信息量的信息。一般来说R越小,准确性越高,但是对应传输效率就越低。鱼与熊掌不可兼得的道理。想要靠谱就得牺牲速度;想要提高速度,就要忍受不靠谱。
SNR,signal noise ratio,信噪比,换算关系如下:SNR(dB)=10*log10(snr)。为什么要进行这样的换算?跟使用对数坐标轴一个道理,方便,简单,绘图的时候好看。
为了因为我只会仿真低阶方便仿真,在这里我们进行如下参数规定:
%% 预定义 clear; clc; %预处理 block=10; %码块 N=2^3; %码长 R=1/2; %码率 SNR=1:5; %信噪比dB snr=10.^(SNR./10); %信噪比预定义到这里还没有完。接下来为了方便编程,继续定义将用到的其他变量。
S=floor(N*R); % 信息位所占码长,使用floor意在当N为奇数时冻结位占据数量优势 F=N-S; % 冻结位所占码长 ST=S*block; % signal_total总的信息位长度 FT=F*block; % frozen_total总的冻结位长度