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,... FeedbackConnection)
那么对于函数的第二个参数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]