Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Scilab > Scilab keywords > extraction

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 およびnxの次元に関連します. この機能は全ての多項式に対して動作しますが, 可読性を確保するために, $に 多項式を使用することが推奨されます.

2より大きな次元の行列(参照:ハイパー行列)の場合, 最も右の次元が1に等しくなると 次元が自動的に縮小されます.

list または tlist の場合

指定された場合, kilデータ構造 のサブリストのエントリへのパスを指定します. これにより,中間的なコピーをすることなく再帰的な展開が 可能になります. 命令は以下のようになります:

[...]=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 の場合
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'])

参照

  • find — 論理値ベクトルまたは行列のtrue要素の添え字を見つける
  • horner — 多項式/有理数の評価
  • parents — ( ) 左および右括弧
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:40:16 CEST 2012