1 <?xml version="1.0" encoding="UTF-8"?>
3 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="extraction" xml:lang="ja">
7 <refname>extraction</refname>
9 <refpurpose>行列およびリストのエントリの展開</refpurpose>
27 [...]=l(k1)...(kn)(i) または [...]=l(list(k1,...,kn,i))
29 l(k1)...(kn)(i,j) または l(list(k1,...,kn,list(i,j))
107 <literal>i</literal>, <literal>j</literal>,
109 <literal>k</literal>,.. は以下のようになります:
119 正の要素を有する実数のスカラーまたはベクトルまたは行列.
131 <literal>r=x(i,j)</literal> は,
133 1 から<literal>size(i,'*')</literal>の
135 <literal>l</literal>および
137 1 から <literal>size(j,'*')</literal>の
139 <literal>k</literal>について
141 <literal>r(l,k)=x(int(i(l)),int(j(k)))</literal>となるような
143 行列<literal>r</literal>を作成します.
149 <literal>i</literal> (<literal>j</literal>) の
151 最大値は<literal>size(x,1)</literal>
153 (<literal>size(x,2)</literal>)以下とする必要があります.
163 1x1行列 <literal>x</literal>を指定した
165 <literal>r=x(i)</literal>は,
167 1 から<literal>size(i,1)</literal>の<literal>l</literal>および
169 1 から <literal>size(i,2)</literal>の<literal>k</literal>
171 について, <literal>r(l,k)=x(int(i(l)),int(i(k)))</literal>
175 行列 <literal>r</literal> を構築します.
181 この場合,全てのエントリが1に等しい場合にのみ,
183 添え字 <literal>i</literal>が有効です.
193 <literal>x</literal>を指定した行ベクトル<literal>r=x(i)</literal>は,
195 1から<literal>size(i,'*')</literal>の<literal>l</literal>
197 について<literal>r(l)=x(int(i(l)))</literal>となるような
199 行ベクトル <literal>r</literal>を作成します.
201 <literal>i</literal>の最大値が
203 <literal>size(x,'*')</literal>以下とする必要があります.
213 1つ以上の列を有する行列<literal>x</literal>を指定した
215 <literal>r=x(i)</literal> は,
217 <literal>r(l)</literal>
219 (<literal>l</literal>は 1 から <literal>size(i,'*')</literal>)
221 が <literal>x</literal>の列の結合により作成された
225 エントリ<literal>int(i(l))</literal>を含むような
227 列ベクトル<literal>r</literal>を作成します.
233 <literal>i</literal> の最大値は
235 <literal>size(x,'*')</literal>以下である必要があります.
251 記号 <literal> : </literal>
269 <literal>r=x(i,:)</literal> は,
271 1から<literal>size(i,'*')</literal>の<literal>l</literal>,
273 1から<literal>size(x,2)</literal>の<literal>k</literal>について,
275 <literal>r(l,k)=x(int(i(l)),k))</literal>となるような
277 行列 <literal>r</literal> を作成します.
287 <literal>r=x(:,j)</literal> は,
289 1から<literal>size(r,1)</literal>の<literal>l</literal>,
291 1から<literal>size(j,'*')</literal>の<literal>k</literal>について,
293 <literal>r(l,k)=x(l,int(j(k)))</literal>となるような
295 行列 <literal>r</literal> を作成します.
305 <literal>r=x(:)</literal> は,
307 <literal>x</literal>列の列結合により
309 列ベクトル<literal>r</literal>を作成します.
311 これは,<literal>matrix(x,size(x,'*'),1)</literal>と等価です.
325 <term>論理値のベクトル</term>
331 添え字 (<literal>i</literal> または
333 <literal>j</literal> ) が論理値のベクトルの場合,それぞれ
335 <literal>find(i)</literal>または<literal>find(j)</literal>
353 添え字 (<literal>i</literal> または
355 <literal>j</literal> )が多項式のベクトルまたは
359 <literal>horner(i,m)</literal>または
361 <literal>horner(j,n)</literal>と解釈されます.
363 ただし,<literal>m</literal> および<literal>n</literal>
365 は<literal>x</literal>の次元に関連します.
367 この機能は全ての多項式に対して動作しますが,
369 可読性を確保するために, <literal>$</literal>に
383 2より大きな次元の行列(参照:<link linkend="hypermatrices">ハイパー行列</link>)の場合,
397 <term>list または tlist の場合</term>
405 <literal>ki</literal>は<literal>l</literal>データ構造
407 のサブリストのエントリへのパスを指定します.
409 これにより,中間的なコピーをすることなく再帰的な展開が
419 <literal>[...]=l(k1)...(kn)(i)</literal>
427 <literal>[...]=l(list(k1,...,kn,i))</literal>
431 <para>は以下のように解釈されます:</para>
435 <literal>lk1 = l(k1)</literal><literal> .. = .. </literal><literal>lkn = lkn-1(kn)</literal><literal>[...] = lkn(i)</literal>
437 そして,<literal>l(k1)...(kn)(i,j)</literal> および
443 <literal>l(list(k1,...,kn,list(i,j))</literal> 命令は
445 以下のように解釈されます: <literal>lk1 = l(k1)</literal> <literal> .. = ..
449 <literal>lkn = lkn-1(kn)</literal> <literal>
455 <literal>i</literal> および <literal>j</literal>については後述します.
459 この命令は,選択した要素と同じ数の左辺の引数を有する必要があります.
461 しかし,展開構文を関数の中で使用した場合,
471 <literal> l(list())</literal> は
473 <literal> l</literal>と同じであることに注意してください.
481 <term>i および j は以下のようになります :</term>
489 <term>正の要素を有する実数のスカラーまたはベクトルまたは行列.</term>
495 <literal>[r1,...rn]=l(i)</literal> は
497 リスト l から要素<literal>i(k)</literal>を展開し,これを
499 1から<literal>size(i,'*')</literal>までの <literal>k</literal>
501 について <literal>rk</literal> に保存します.
513 記号 <literal> : </literal>
519 <para>"全ての要素"を意味します.</para>
527 <term>論理値のベクトル.</term>
533 <literal>i</literal> が論理値のベクトルの場合,
535 <literal>find(i)</literal>と解釈されます.
551 <literal>i</literal> が多項式のベクトルまたは
555 <literal>horner(i,m)</literal>として解釈されます.
557 ただし,<literal>m=size(l)</literal>です.
559 この機能は全ての多項式に関して動作しますが,
561 可読性を良くするために,多項式を<literal>$</literal>の
579 <term>k1,..kn は以下のようになります. :</term>
587 <term>実数の正のスカラー,</term>
605 は<literal>horner(ki,m)</literal>と解釈されます.
607 ただし,<literal>m</literal>は対応するサブリストの大きさです.
621 <para>サブリストのエントリ名に関連します.</para>
649 有理関数や状態空間線形システムのようにソフトウエアで作成される行列の型の場合,
653 <literal>x(i)</literal> 構文をベクトル要素の展開には使用できない可能性が
659 <literal>x(1,j)</literal> または <literal>x(i,1)</literal>構文を使用する必要があります.
669 <programlisting role="example"><![CDATA[
688 b=[1/%s,(%s+1)/(%s-1)]
692 // LIST または TLIST の場合
697 x=tlist(l(2:3)) // lの末尾2要素を有する tlist を作成
699 dts=list(1,tlist(['x';'a';'b'],10,[2 3]));
702 [a,b]=dts(2)(['a','b'])
707 <refsection role="see also">
711 <simplelist type="inline">
715 <link linkend="find">find</link>
721 <link linkend="horner">horner</link>
727 <link linkend="parentheses">parentheses</link>