1
1
<?xml version="1.0" encoding="UTF-8"?>
2
2
<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" version="5.0-subset Scilab" xml:id="extraction" xml:lang="ru">
4
<refname>выделение</refname>
5
<refpurpose>выделение элемента матрицы или списка</refpurpose>
8
<title>Последовательность вызова</title>
14
[...]=l(k1)...(kn)(i) or [...]=l(list(k1,...,kn,i))
15
l(k1)...(kn)(i,j) or l(list(k1,...,kn,list(i,j))
19
<title>Аргументы</title>
24
<para>матрица любого типа</para>
30
<para>переменная-список</para>
48
<title>Описание</title>
51
<term>В СЛУЧАЕ МАТРИЦЫ</term>
54
<literal>i</literal>, <literal>j</literal>,
55
<literal>k</literal>,.. могут быть:
60
вещественным скаляром или вектором или матрицей с положительными элементами.
66
<literal>r=x(i,j)</literal> формирует матрицу
67
<literal>r</literal> такую, что
68
<literal>r(l,k)=x(int(i(l)),int(j(k)))</literal> для
69
<literal>l</literal> от 1 до
70
<literal>size(i,'*')</literal> и <literal>k</literal>
71
от 1 до <literal>size(j,'*')</literal>.
74
Максимальное значение <literal>i</literal> (<literal>j</literal>) должно
75
быть меньше, либо равно <literal>size(x,1)</literal>
76
(<literal>size(x,2)</literal>).
81
<literal>r=x(i)</literal> с матрицей <literal>x</literal>
82
размером 1x1 формирует матрицу <literal>r</literal> такую, что
83
<literal>r(l,k)=x(int(i(l)),int(i(k)))</literal> для
84
<literal>l</literal> от 1 до
85
<literal>size(i,1)</literal> и <literal>k</literal> от
86
1 до <literal>size(i,2)</literal>.
89
Заметьте, что в этом случае индекс <literal>i</literal> корректен только
90
если все её элементы равны единице.
95
<literal>r=x(i)</literal> с вектор-столбцом <literal>x</literal>
96
формирует вектор-строку <literal>r</literal> такую, что
97
<literal>r(l)=x(int(i(l)))</literal> для
98
<literal>l</literal> от 1 до
99
<literal>size(i,'*')</literal>
102
Максимальное значение <literal>i</literal>
103
должно быть меньше, либо равно <literal>size(x,'*')</literal>.
108
<literal>r=x(i)</literal> с матрицей <literal>x</literal>
109
с одним или более столбцов формирует вектор-столбец
110
<literal>r</literal> такой, что <literal>r(l)</literal>
111
(<literal>l</literal> от 1 до
112
<literal>size(i,'*')</literal>) содержит
113
<literal>int(i(l))</literal>-тые элементы вектор-столбца, сформированного
114
конкатенацией столбцов матрицы <literal>x</literal>.
117
Максимальное значение <literal>i</literal> должно быть меньше или равно
118
<literal>size(x,'*')</literal>.
126
символом "двоеточие" <literal> : </literal>
130
означает "все элементы".
135
<literal>r=x(i,:)</literal> формирует матрицу <literal>r</literal> такую,
136
что <literal>r(l,k)=x(int(i(l)),k))</literal> для
137
<literal>l</literal> от 1 до
138
<literal>size(i,'*')</literal> и <literal>k</literal>
139
от 1 до <literal>size(x,2)</literal>.
144
<literal>r=x(:,j)</literal> формирует матрицу <literal>r</literal> такую,
145
что <literal>r(l,k)=x(l,int(j(k)))</literal> для
146
<literal>l</literal> от 1 до
147
<literal>size(r,1)</literal> и <literal>k</literal> от
148
1 до <literal>size(j,'*')</literal>.
153
<literal>r=x(:)</literal> формирует вектор-столбец <literal>r</literal>,
154
сформированный постолбцовой конкатенацией столбцов матрицы
155
<literal> x</literal>. Это эквивалентно инструкции
156
<literal>matrix(x,size(x,'*'),1)</literal>.
163
<term>вектором логических значений</term>
166
Если индекс (<literal>i</literal> или <literal>j</literal>) является
167
вектором логических значений, то он интерпретируется как
168
<literal>find(i)</literal> или, соответственно, <literal>find(j)</literal>.
173
<term>полиномом</term>
176
Если индекс (<literal>i</literal> или <literal>j</literal>) является вектором
177
полиномов или подразумевается вектором полиномов, то он интерпретируется как
178
<literal>horner(i,m)</literal> или, соответственно,
179
<literal>horner(j,n)</literal> где <literal>m</literal> и
180
<literal>n</literal> относятся к размерам матрицы <literal>x</literal>.
181
Даже если эта возможность работает со всеми полиномами, рекомендуется использовать для удобочитаемости символ <literal>$</literal>.
187
Для матриц, у которых больше двух размерностей (см. <link linkend="hypermatrices">гиперматрицы</link>) степень размерности автоматически уменьшается, когда самые крайние правые размерности равны 1.
192
<term>В СЛУЧАЕ СПИСКА (LIST) ИЛИ ТИПИЗИРОВАННОГО СПИСКА (TLIST)</term>
195
В этом случае <literal>ki</literal> указывает путь до элемента
196
подсписка структуры данных <literal>l</literal>. Разрешено
197
рекурсивное выделение без промежуточных копий. Инструкции
200
<literal>[...]=l(k1)...(kn)(i)</literal>
204
<literal>[...]=l(list(k1,...,kn,i))</literal>
206
<para>интерпретируются как:</para>
208
<literal>lk1 = l(k1)</literal>
211
<literal> .. = .. </literal>
214
<literal>lkn = lkn-1(kn)</literal>
217
<literal>[...] = lkn(i)</literal>.
220
А инструкции <literal>l(k1)...(kn)(i,j)</literal> и
221
<literal>l(list(k1,...,kn,list(i,j))</literal> интерпретируются как:
224
<literal>lk1 = l(k1)</literal>
227
<literal> .. = .. </literal>
230
<literal>lkn = lkn-1(kn)</literal>
238
Когда путь указывает более одного элемента списка,то инструкция
239
должна иметь столько аргументов слева, сколько выбрано элементов. Однако, если
240
синтаксис выделения используется внутри вызывающей последовательности ввода
241
функции, то каждый возвращаемый элемент списка добавляется к вызывающей
242
последовательности функции.
245
Заметьте, что <literal>l(list())</literal> -- это то же самое, что и <literal>l</literal>.
249
<term>i и j могут быть:</term>
253
<term>вещественными скалярами или векторами или матрицами с положительными элементами.
257
<literal>[r1,...rn]=l(i)</literal> выделяет элементы
258
<literal>i(k)</literal> из списка <literal>l</literal> и хранит их в переменных
259
<literal>rk</literal>, где <literal>k</literal> от 1 до <literal>size(i,'*')</literal>.
268
<para>который ставится для "всех элементов".</para>
272
<term>вектором логических значений.</term>
275
Если <literal>i</literal> является вектором логических значений, то
276
он интерпретируется как <literal>find(i)</literal>.
281
<term>полиномом</term>
284
Если <literal>i</literal> является вектором полиномов или вектором неявных полиномов,
285
то он интерпретируется как <literal>horner(i,m)</literal>, где
286
<literal>m=size(l)</literal>. Даже если эта возможность работает со всеми полиномами,
287
рекомендуется использовать для удобочитаемости символ <literal>$</literal>.
295
<term>k1 ... kn могут быть:</term>
299
<term>вещественным положительным скаляром</term>
305
<term>полиномом</term>
308
интерпретируемым как <literal>horner(ki,m)</literal>, где
309
<literal>m</literal> -- соответствующий размер подсписка.
314
<term>символьной строкой</term>
316
<para>связанной с именем элемента подсписка.</para>
328
<title>Примечания</title>
330
Для программно определяемых типов матриц, таких как рациональные функции
331
и линейные системы в пространстве состояний, синтаксис <literal>x(i)</literal>
332
нельзя использовать для выделения элемента вектора из-за путаницы с выделением
333
элемнта списка. Нужно использовать синтаксис <literal>x(1,j)</literal> или
334
<literal>x(i,1)</literal>.
338
<title>Примеры</title>
339
<programlisting role="example"><![CDATA[
4
<refname>выделение</refname>
5
<refpurpose>выделение элемента матрицы или списка</refpurpose>
8
<title>Последовательность вызова</title>
14
[...]=l(k1)...(kn)(i) or [...]=l(list(k1,...,kn,i))
15
l(k1)...(kn)(i,j) or l(list(k1,...,kn,list(i,j))
19
<title>Аргументы</title>
24
<para>матрица любого типа</para>
30
<para>переменная-список</para>
48
<title>Описание</title>
51
<term>В СЛУЧАЕ МАТРИЦЫ</term>
54
<literal>i</literal>, <literal>j</literal>,
55
<literal>k</literal>,.. могут быть:
60
вещественным скаляром или вектором или матрицей с положительными элементами.
66
<literal>r=x(i,j)</literal> формирует матрицу
67
<literal>r</literal> такую, что
68
<literal>r(l,k)=x(int(i(l)),int(j(k)))</literal> для
69
<literal>l</literal> от 1 до
70
<literal>size(i,'*')</literal> и <literal>k</literal>
71
от 1 до <literal>size(j,'*')</literal>.
74
Максимальное значение <literal>i</literal> (<literal>j</literal>) должно
75
быть меньше, либо равно <literal>size(x,1)</literal>
76
(<literal>size(x,2)</literal>).
81
<literal>r=x(i)</literal> с матрицей <literal>x</literal>
82
размером 1x1 формирует матрицу <literal>r</literal> такую, что
83
<literal>r(l,k)=x(int(i(l)),int(i(k)))</literal> для
84
<literal>l</literal> от 1 до
85
<literal>size(i,1)</literal> и <literal>k</literal> от
86
1 до <literal>size(i,2)</literal>.
89
Заметьте, что в этом случае индекс <literal>i</literal> корректен только
90
если все её элементы равны единице.
95
<literal>r=x(i)</literal> с вектор-столбцом <literal>x</literal>
96
формирует вектор-строку <literal>r</literal> такую, что
97
<literal>r(l)=x(int(i(l)))</literal> для
98
<literal>l</literal> от 1 до
99
<literal>size(i,'*')</literal>
102
Максимальное значение <literal>i</literal>
103
должно быть меньше, либо равно <literal>size(x,'*')</literal>.
108
<literal>r=x(i)</literal> с матрицей <literal>x</literal>
109
с одним или более столбцов формирует вектор-столбец
110
<literal>r</literal> такой, что <literal>r(l)</literal>
111
(<literal>l</literal> от 1 до
112
<literal>size(i,'*')</literal>) содержит
113
<literal>int(i(l))</literal>-тые элементы вектор-столбца, сформированного
114
конкатенацией столбцов матрицы <literal>x</literal>.
117
Максимальное значение <literal>i</literal> должно быть меньше или равно
118
<literal>size(x,'*')</literal>.
126
символом "двоеточие" <literal> : </literal>
130
означает "все элементы".
135
<literal>r=x(i,:)</literal> формирует матрицу <literal>r</literal> такую,
136
что <literal>r(l,k)=x(int(i(l)),k))</literal> для
137
<literal>l</literal> от 1 до
138
<literal>size(i,'*')</literal> и <literal>k</literal>
139
от 1 до <literal>size(x,2)</literal>.
144
<literal>r=x(:,j)</literal> формирует матрицу <literal>r</literal> такую,
145
что <literal>r(l,k)=x(l,int(j(k)))</literal> для
146
<literal>l</literal> от 1 до
147
<literal>size(r,1)</literal> и <literal>k</literal> от
148
1 до <literal>size(j,'*')</literal>.
153
<literal>r=x(:)</literal> формирует вектор-столбец <literal>r</literal>,
154
сформированный постолбцовой конкатенацией столбцов матрицы
155
<literal> x</literal>. Это эквивалентно инструкции
156
<literal>matrix(x,size(x,'*'),1)</literal>.
163
<term>вектором логических значений</term>
166
Если индекс (<literal>i</literal> или <literal>j</literal>) является
167
вектором логических значений, то он интерпретируется как
168
<literal>find(i)</literal> или, соответственно, <literal>find(j)</literal>.
173
<term>полиномом</term>
176
Если индекс (<literal>i</literal> или <literal>j</literal>) является вектором
177
полиномов или подразумевается вектором полиномов, то он интерпретируется как
178
<literal>horner(i,m)</literal> или, соответственно,
179
<literal>horner(j,n)</literal> где <literal>m</literal> и
180
<literal>n</literal> относятся к размерам матрицы <literal>x</literal>.
181
Даже если эта возможность работает со всеми полиномами, рекомендуется использовать для удобочитаемости символ <literal>$</literal>.
187
Для матриц, у которых больше двух размерностей (см. <link linkend="hypermatrices">гиперматрицы</link>) степень размерности автоматически уменьшается, когда самые крайние правые размерности равны 1.
192
<term>В СЛУЧАЕ СПИСКА (LIST) ИЛИ ТИПИЗИРОВАННОГО СПИСКА (TLIST)</term>
195
В этом случае <literal>ki</literal> указывает путь до элемента
196
подсписка структуры данных <literal>l</literal>. Разрешено
197
рекурсивное выделение без промежуточных копий. Инструкции
200
<literal>[...]=l(k1)...(kn)(i)</literal>
204
<literal>[...]=l(list(k1,...,kn,i))</literal>
206
<para>интерпретируются как:</para>
208
<literal>lk1 = l(k1)</literal>
211
<literal> .. = .. </literal>
214
<literal>lkn = lkn-1(kn)</literal>
217
<literal>[...] = lkn(i)</literal>.
220
А инструкции <literal>l(k1)...(kn)(i,j)</literal> и
221
<literal>l(list(k1,...,kn,list(i,j))</literal> интерпретируются как:
224
<literal>lk1 = l(k1)</literal>
227
<literal> .. = .. </literal>
230
<literal>lkn = lkn-1(kn)</literal>
238
Когда путь указывает более одного элемента списка,то инструкция
239
должна иметь столько аргументов слева, сколько выбрано элементов. Однако, если
240
синтаксис выделения используется внутри вызывающей последовательности ввода
241
функции, то каждый возвращаемый элемент списка добавляется к вызывающей
242
последовательности функции.
245
Заметьте, что <literal>l(list())</literal> -- это то же самое, что и <literal>l</literal>.
249
<term>i и j могут быть:</term>
253
<term>вещественными скалярами или векторами или матрицами с положительными элементами.
257
<literal>[r1,...rn]=l(i)</literal> выделяет элементы
258
<literal>i(k)</literal> из списка <literal>l</literal> и хранит их в переменных
259
<literal>rk</literal>, где <literal>k</literal> от 1 до <literal>size(i,'*')</literal>.
268
<para>который ставится для "всех элементов".</para>
272
<term>вектором логических значений.</term>
275
Если <literal>i</literal> является вектором логических значений, то
276
он интерпретируется как <literal>find(i)</literal>.
281
<term>полиномом</term>
284
Если <literal>i</literal> является вектором полиномов или вектором неявных полиномов,
285
то он интерпретируется как <literal>horner(i,m)</literal>, где
286
<literal>m=size(l)</literal>. Даже если эта возможность работает со всеми полиномами,
287
рекомендуется использовать для удобочитаемости символ <literal>$</literal>.
295
<term>k1 ... kn могут быть:</term>
299
<term>вещественным положительным скаляром</term>
305
<term>полиномом</term>
308
интерпретируемым как <literal>horner(ki,m)</literal>, где
309
<literal>m</literal> -- соответствующий размер подсписка.
314
<term>символьной строкой</term>
316
<para>связанной с именем элемента подсписка.</para>
328
<title>Примечания</title>
330
Для программно определяемых типов матриц, таких как рациональные функции
331
и линейные системы в пространстве состояний, синтаксис <literal>x(i)</literal>
332
нельзя использовать для выделения элемента вектора из-за путаницы с выделением
333
элемнта списка. Нужно использовать синтаксис <literal>x(1,j)</literal> или
334
<literal>x(i,1)</literal>.
338
<title>Примеры</title>
339
<programlisting role="example"><![CDATA[
340
340
// В СЛУЧАЕ МАТРИЦЫ