extraction
行列およびリストのエントリの展開
呼出し手順
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))
引数
- x
任意の型の行列
- l
リスト変数
- i,j, k
添え字
- k1,...kn
添え字
説明
行列の場合
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に等しくなると 次元が自動的に縮小されます.
list または tlist の場合
指定された場合,
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
と同じであることに注意してください.
- i および j は以下のようになります :
- 正の要素を有する実数のスカラーまたはベクトルまたは行列.
[r1,...rn]=l(i)
は リスト l から要素i(k)
を展開し,これを 1からsize(i,'*')
までのk
についてrk
に保存します.- 記号
:
"全ての要素"を意味します.
- 論理値のベクトル.
i
が論理値のベクトルの場合,find(i)
と解釈されます.- 多項式.
i
が多項式のベクトルまたは 暗黙の多項式ベクトルの場合,horner(i,m)
として解釈されます. ただし,m=size(l)
です. この機能は全ての多項式に関して動作しますが, 可読性を良くするために,多項式を$
の 中で使用することを推奨します.
- k1,..kn は以下のようになります. :
- 実数の正のスカラー,
- 多項式,
は
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 の場合
参照
- insertion — 変数への部分的な代入または修正
- colon — コロン演算子
- find — 論理値ベクトルまたは行列のtrue要素の添え字を見つける
- horner — 多項式/有理数の評価
- parentheses — ( ) 左および右括弧
Report an issue | ||
<< &, && | Elementary Functions | ind2sub >> |