matlab基础语法笔记(二)

来源:互联网 发布:雷云登陆 网络不可用 编辑:程序博客网 时间:2024/05/20 23:29

linspace:

函数形式:X=linspace(a,b,n)

在a,b之间以均匀间隔产生一个具有n个数的行向量。默认n为100。

eg:

X=linspace(1,5,5)

运行结果:
X =
     1     2     3     4     5


reshape

函数形式B=reshape(A,m,n)

将矩阵A转换为m*n的矩阵。m*n必须与矩阵A中的数的个数一致。B中的元素是按照A中的元素以m为间隔的列抽样排列的。

eg:

A=[1 2 3
   4 5 6
   7 8 9
   10 11 12];
 B=reshape(A,2,6)
 C=reshape(A,6,2)


运行结果:

B =
     1     7     2     8     3     9
     4    10     5    11     6    12

C =
     1     8
     4    11
     7     3
    10     6
     2     9
     5    12


若A是一个矩阵,A(:)是将矩阵按列的顺序转换为一个列向量。

A(:,n)是取A矩阵的第n列,n必须在矩阵列的范围内。

A(n:m)是将矩阵按A(:)排序后取的从第n个数到第m个数,是一个行向量。

A(:,M),其中M是一个行向量,将矩阵A的列按照M中的数进行重排。

A(n:m,:) 是矩阵A的n到m行

eg:

A=[1 2 3
   4 5 6
   7 8 9];

M=[3 2 1];
 B=A(:)

C=A(:,2)

D=A(3:6)

E=A(:,M)

F=A(2:3,:)

运行结果:

B =
     1
     4
     7
     2
     5
     8
     3
     6
     9

C=
     2
     5
     8

D= 

 7     2     5     8

E=
     3     2     1
     6     5     4
     9     8     7

F =
     4     5     6
     7     8     9

persistent:

用来在函数中申明持久变量。

作用:为了避免每次调用函数时创建和释放系统对象,函数内的系统对象可申明为persistent,这样可支持只在函数第一次调用时创建系统对象。


poly2trellis:
trellis = poly2trellis(ConstraintLength,CodeGenerator)
trellis = poly2trellis(ConstraintLength,CodeGenerator,... FeedbackConnection)

作用:将卷积编码器的多项式输入转化为matlab中的网格形式。第一种用于普通转化,第二种用于前向反馈的转化。

下图是一个R=2/3的卷积编码器,经过S/P转换变成两路数据,两路输入在寄存器中进行卷积编码,三路并行的输出。那么ConstraintLength就是描述每一路输入的长度,本编码器有两路输入,对应着下图第一行寄存器,四个寄存器+一个输入一共5个输入;同样对与第二行一共就有4个输入。那么ConstraintLength就应该是[5,4]。
那么对于函数的第二个参数CodeGenerator的参数比较复杂。如果有n路输入,m路输出话,那么CodeGenerator就是一个n×m的一个矩阵,矩阵的元素是一个比较特殊。Octal number,8进制的数。在n×m的矩阵中的第(i,j)个元素,其表示第i路的输入和第j路的连接情况。当第i路的数据和第j路的加法器连接是就将该寄存器的输出处标为1,如(1,1)连接情况是第一、第四和第五个相连所以用向量表示为"10011"用八进制表示为"23"(1,2)="11,101"="35";(1,3)="0000"="0";(2,1)="0000"="0";(2,2)="0,101"="05";(2,3)="1,011"="13",最后得到CodeGenerator=[23,35,0;0,05,13]。


这里的到了产生卷积编码器的编码器的表示方法,那么生成相应的trellis就能在系统中使用了。在命令行中键入trellis=poly2trellis([5,4],[23,35,0;0,05,13])得到如下输出。
>>trellis=poly2trellis([5,4],[23,35,0;0,05,13])
trellis =
numInputSymbols: 4 【两个输入2^2=4】
numOutputSymbols: 8 【三个输出2^3=8】
numStates: 128 【说明:128=2^3*2^4(3是第一级寄存器的个数,4第二级寄存器的个数】
nextStates: [128x4 double] 【输入乘以中间状态】
outputs: [128x4 double]

0 0
原创粉丝点击