1. 程式人生 > >matlab基礎語法筆記(二)

matlab基礎語法筆記(二)

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]