行列およびリストのエントリの展開
x(i) x(i,j) x(i,j,k,..) [...]=l(i) [...]=l(k1)...(kn)(i) または [...]=l(list(k1,...,kn,i)) l(k1)...(kn)(i,j) または l(list(k1,...,kn,list(i,j))
任意の型の行列
リスト変数
添え字
添え字
i
, j
,
k
,.. は以下のようになります:
r=x(i,j)
は,
1 からsize(i,'*')
の
l
および
1 から size(j,'*')
の
k
について
r(l,k)=x(int(i(l)),int(j(k)))
となるような
行列r
を作成します.
i
(j
) の
最大値はsize(x,1)
(size(x,2)
)以下とする必要があります.
1x1行列 x
を指定した
r=x(i)
は,
1 からsize(i,1)
のl
および
1 から size(i,2)
のk
について, r(l,k)=x(int(i(l)),int(i(k)))
となるような
行列 r
を構築します.
この場合,全てのエントリが1に等しい場合にのみ,
添え字 i
が有効です.
x
を指定した行ベクトルr=x(i)
は,
1からsize(i,'*')
のl
についてr(l)=x(int(i(l)))
となるような
行ベクトル r
を作成します.
i
の最大値が
size(x,'*')
以下とする必要があります.
1つ以上の列を有する行列x
を指定した
r=x(i)
は,
r(l)
(l
は 1 から size(i,'*')
)
が x
の列の結合により作成された
列ベクトルの
エントリint(i(l))
を含むような
列ベクトルr
を作成します.
i
の最大値は
size(x,'*')
以下である必要があります.
:
は "全ての要素"を意味します.
r=x(i,:)
は,
1からsize(i,'*')
のl
,
1からsize(x,2)
のk
について,
r(l,k)=x(int(i(l)),k))
となるような
行列 r
を作成します.
r=x(:,j)
は,
1からsize(r,1)
のl
,
1からsize(j,'*')
のk
について,
r(l,k)=x(l,int(j(k)))
となるような
行列 r
を作成します.
r=x(:)
は,
x
列の列結合により
列ベクトルr
を作成します.
これは,matrix(x,size(x,'*'),1)
と等価です.
添え字 (i
または
j
) が論理値のベクトルの場合,それぞれ
find(i)
またはfind(j)
として解釈されます.
添え字 (i
または
j
)が多項式のベクトルまたは
暗黙の多項式ベクトルの場合,それぞれ
horner(i,m)
または
horner(j,n)
と解釈されます.
ただし,m
およびn
はx
の次元に関連します.
この機能は全ての多項式に対して動作しますが,
可読性を確保するために, $
に
多項式を使用することが推奨されます.
2より大きな次元の行列(参照:ハイパー行列)の場合, 最も右の次元が1に等しくなると 次元が自動的に縮小されます.
指定された場合,
ki
はl
データ構造
のサブリストのエントリへのパスを指定します.
これにより,中間的なコピーをすることなく再帰的な展開が
可能になります.
命令は以下のようになります:
[...]=l(k1)...(kn)(i)
および
[...]=l(list(k1,...,kn,i))
は以下のように解釈されます:
lk1 = l(k1)
.. = ..
lkn = lkn-1(kn)
[...] = lkn(i)
そして,l(k1)...(kn)(i,j)
および
l(list(k1,...,kn,list(i,j))
命令は
以下のように解釈されます: lk1 = l(k1)
.. = ..
lkn = lkn-1(kn)
lkn(i,j)
i
および j
については後述します.
パスが複数のリストの要素を指す場合,
この命令は,選択した要素と同じ数の左辺の引数を有する必要があります.
しかし,展開構文を関数の中で使用した場合,
リストの要素を返す入力の呼出し手順が
関数の呼び出し手順に追加されます.
l(list())
は
l
と同じであることに注意してください.
[r1,...rn]=l(i)
は
リスト l から要素i(k)
を展開し,これを
1からsize(i,'*')
までの k
について rk
に保存します.
:
"全ての要素"を意味します.
i
が論理値のベクトルの場合,
find(i)
と解釈されます.
i
が多項式のベクトルまたは
暗黙の多項式ベクトルの場合,
horner(i,m)
として解釈されます.
ただし,m=size(l)
です.
この機能は全ての多項式に関して動作しますが,
可読性を良くするために,多項式を$
の
中で使用することを推奨します.
はhorner(ki,m)
と解釈されます.
ただし,m
は対応するサブリストの大きさです.
サブリストのエントリ名に関連します.
有理関数や状態空間線形システムのようにソフトウエアで作成される行列の型の場合,
リストの要素の展開と区別できないため,
x(i)
構文をベクトル要素の展開には使用できない可能性が
あります.
この場合,
x(1,j)
または x(i,1)
構文を使用する必要があります.
// 行列の場合 a=[1 2 3;4 5 6] a(1,2) a([1 1],2) a(:,1) a(:,3:-1:1) a(1) a(6) a(:) a([%t %f %f %t]) a([%t %f],[2 3]) a(1:2,$-1) a($:-1:1,2) a($) // x='test' x([1 1;1 1;1 1]) // b=[1/%s,(%s+1)/(%s-1)] b(1,1) b(1,$) b(2) // 分子 // LIST または TLIST の場合 l=list(1,'qwerw',%s) l(1) [a,b]=l([3 2]) l($) x=tlist(l(2:3)) // lの末尾2要素を有する tlist を作成 // dts=list(1,tlist(['x';'a';'b'],10,[2 3])); dts(2)('a') dts(2)('b')(1,2) [a,b]=dts(2)(['a','b']) | ![]() | ![]() |