需要注意的是,虽然MATLAB用C语言重写,但是在矩阵存储方式上却和FORTRAN保持一致,两者使用的均为列优先存储,而非行优先存储。在进行较大的矩阵运算时,这一差别对性能的影响是不应忽略的。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB包括拥有数百个内部函数的主包和三十几种工具包。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
MATLAB提供了定义简单数组的简单方式,使用语法: 初值、增量、终值。
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善。
5.2 循环码的编码原理
对于一般的(n, k) 循环码,需要找一个多项式g(x), ,且
对于循环码,即前K位是信息元,后n-k=r位是校验元的码,将信息元左移r位,右边再放置校验元,且编成的码字对应的多项式是g(x)的倍式,即完成了编码(本文所实现Reed-Solomen 码即采用循环码的构造方式)。
因此 ,
(5-1)
其中 ,叫做信息多项式,与k位信息元对应: 。m(x)乘以 即相当于将信息元左移r=n-k位。而校验元对应的多项式为
(5-2)
故必有 (5-3)
可见,循环码编码的关键就是找到生成多项式g(x)。
设生成多项式 ,它的全部根必在GF(q)的扩域GF(q")上,即g(x)可以在GF(q"')上完全分解:
(5-4)
式中, 。这就是说 都是g(x)的根。
设:码多项式为 ,因为循环码的码字必是g(x)的倍式,所以g(x)的根也是C(x)的根,即有
(5-5)
写成矩阵式为
(5-6)
故循环码的一致校验矩阵为
(5-7)
这说明:若C(x)有根 ,则它必在H矩阵的零空间中。
一般地,若 ,其相应的最小多项式为 。令n是可使每一个mi(x)整除xn-1的最小正整数,因为g(x)可整除xn-1,而g(x)是码多项式中唯一的次数最低的首一多项式,故有: Matlab循环码在不同信道中性能仿真研究+流程图(12):http://www.youerw.com/tongxin/lunwen_351.html