[doc] save() page updated for 6.0 (rewritten)
[scilab.git] / scilab / modules / fileio / help / ru_RU / save_format.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3     * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4     * Copyright (C) 2008 - INRIA
5     * ...
6     *
7  * Copyright (C) 2012 - 2016 - Scilab Enterprises
8  *
9  * This file is hereby licensed under the terms of the GNU GPL v2.0,
10  * pursuant to article 5.3.4 of the CeCILL v.2.1.
11  * This file was originally licensed under the terms of the CeCILL v2.1,
12  * and continues to be available under such terms.
13  * For more information, see the COPYING file which you should have received
14  * along with this program.
15     *
16 -->
17 <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="save_format" xml:lang="ru">
18     <refnamediv>
19         <refname>save format</refname>
20         <refpurpose>формат файлов, полученных с помощью функции "save"</refpurpose>
21     </refnamediv>
22     <refsection>
23         <title>Аннотация</title>
24         <para>
25             Целью данного документа является определения формата HDF5,
26             используемого Scilab'ом для хранения своих данных.
27         </para>
28         <para>
29             Этот формат называется SOD от английского Scilab Open Data
30             ("открытые данные Scilab'а").
31         </para>
32         <para>
33             Первый публичный релиз SOD был сделан в Scilab 5.4.0.
34         </para>
35     </refsection>
36     <refsection>
37         <title>Основная причина</title>
38         <para>
39             Интероперабельность является одним из ключевых аспектов
40             современного программного обеспечения. Для того, чтобы
41             больше и больше улучшать этот аспект был предложено
42             стандартное определение формата HDF5.
43         </para>
44         <para>
45             Со времён Scilab 5.2.0 была разработана возможность
46             экспорта/импорта, которая используется для обмена данными.
47             Это уже один из основных компонентов Xcos для хранения и
48             обмена данными.
49         </para>
50     </refsection>
51     <refsection>
52         <title>Поддерживаемые типы данных</title>
53         <para>
54             Поддерживаются все типы данных Scilab'а. Например:
55         </para>
56         <informaltable border="1">
57             <tbody>
58                 <tr>
59                     <td>
60                         <emphasis role="bold">Имя</emphasis>
61                     </td>
62                     <td>
63                         <emphasis role="bold">Пример в Scilab'е</emphasis>
64                     </td>
65                 </tr>
66                 <tr>
67                     <td>
68                         <emphasis role="bold">double</emphasis>
69                     </td>
70                     <programlisting>
71                         A=32;
72                         b=[32,2];
73                         c=[2,2;3,4];
74                         d=rand(10,10);
75                     </programlisting>
76                 </tr>
77                 <tr>
78                     <td>
79                         <emphasis role="bold">string</emphasis>
80                     </td>
81                     <programlisting>
82                         a="my string";
83                         b=["string 1";"my string 2"];
84                     </programlisting>
85                 </tr>
86                 <tr>
87                     <td>
88                         <emphasis role="bold">boolean</emphasis>
89                     </td>
90                     <programlisting>
91                         a=%t;
92                         b=[%t, %f];
93                     </programlisting>
94                 </tr>
95                 <tr>
96                     <td>
97                         <emphasis role="bold">integer</emphasis>
98                     </td>
99                     <td>
100                         <programlisting>
101                             int8([1 -120 127 312])
102                             x=int32(-200:100:400)
103                         </programlisting>
104                     </td>
105                 </tr>
106                 <tr>
107                     <td>
108                         <emphasis role="bold">polynomial</emphasis>
109                     </td>
110                     <td>
111                         <programlisting>
112                             s=poly([2 3],"s")
113                             poly(1:4,'s','c')
114                         </programlisting>
115                     </td>
116                 </tr>
117                 <tr>
118                     <td>
119                         <emphasis role="bold">sparse</emphasis>
120                     </td>
121                     <td align="justify">
122                         <programlisting>
123                             sp=sparse([1,2;4,5;3,10],[1,2,3])
124                         </programlisting>
125                     </td>
126                 </tr>
127                 <tr>
128                     <td>
129                         <emphasis role="bold">boolean sparse</emphasis>
130                     </td>
131                     <td align="justify">
132                         <programlisting>
133                             dense=[%F, %F, %T, %F, %F
134                             %T, %F, %F, %F, %F
135                             %F, %F, %F, %F, %F
136                             %F, %F, %F, %F, %T];
137                             sp=sparse(dense)
138                         </programlisting>
139                     </td>
140                 </tr>
141                 <tr>
142                     <td>
143                         <emphasis role="bold">list</emphasis>
144                     </td>
145                     <td align="justify">
146                         <programlisting>
147                             l = list(1,["a" "b"])
148                         </programlisting>
149                     </td>
150                 </tr>
151                 <tr>
152                     <td>
153                         <emphasis role="bold">tlist</emphasis>
154                     </td>
155                     <td align="justify">
156                         <programlisting>
157                             t = tlist(["listtype","field1","field2"], [], []);
158                         </programlisting>
159                     </td>
160                 </tr>
161                 <tr>
162                     <td>
163                         <emphasis role="bold">mlist</emphasis>
164                     </td>
165                     <td align="justify">
166                         <programlisting>
167                             M=mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
168                         </programlisting>
169                     </td>
170                 </tr>
171             </tbody>
172         </informaltable>
173         <para>
174             Несколько "типов" основаны на <emphasis>tlist</emphasis> или
175             <emphasis>mlist</emphasis>. Это <emphasis>rational</emphasis>,
176             <emphasis>state-space</emphasis>,
177             <emphasis>cell</emphasis> и <emphasis>struct</emphasis>.
178             Следовательно, они явно сохраняются.
179         </para>
180         <para>
181             <emphasis>void</emphasis> и <emphasis>undefined</emphasis> -
182             это два особых элемента, созданных для управления особыми
183             случаями в управлении списками. Они описаны ниже.
184         </para>
185     </refsection>
186     <refsection>
187         <title>Структура файла HDF5</title>
188         <para>
189             Архитектура HDF5 Scilab'а довольно проста.
190         </para>
191         <emphasis role="bold">Основные сведения</emphasis>
192         <para>
193             Для каждой переменной Scilab'а декларируется набор данных в
194             корне. Имя набора данных - это имя переменной Scilab'а.
195         </para>
196         <para>
197             Например, следующий код:
198         </para>
199         <programlisting>
200             emptyuint32matrix = uint32([]);
201             uint32scalar = uint32(1);
202             uint32rowvector = uint32([1 4 7]);
203             uint32colvector = uint32([1;4;7]);
204             uint32matrix = uint32([1 4 7;9 6 3]);
205             save("uint32.sod","emptyuint32matrix","uint32scalar","uint32rowvector","uint32colvector","uint32matrix");
206         </programlisting>
207         <para>формирует:</para>
208         <mediaobject>
209             <imageobject>
210                 <imagedata fileref="../images/img001.png"/>
211             </imageobject>
212         </mediaobject>
213         <para>
214             Каждый корневой набор данных имеет атрибут, именуемый
215             <literal>SCILAB_Class</literal>. Этот атрибут определяет
216             какие типы переменных хранятся в HDF5-файле.
217         </para>
218         <para>
219             Если переменная является основным типом и без связанных с
220             ним комплексных значений, то данные сохраняются
221             непосредственно в набор данных. В противном случае, набор
222             данных содержит ссылки на фактические данные.
223         </para>
224         <para>
225             Каждый SOD-файл содержит две особые переменные:
226         </para>
227         <itemizedlist>
228             <listitem>
229                 <para>
230                     <literal>SCILAB_scilab_version</literal> - описывает
231                     какая версия Scilab'а использовалась для сохранения
232                     SOD-файла.
233                 </para>
234                 <para>
235                     Например, для Scilab 5.4.0 эти данные будут иметь вид:
236                 </para>
237                 <para>
238                     <emphasis>SCILAB_scilab_version = scilab-5.4.0</emphasis>
239                 </para>
240             </listitem>
241             <listitem>
242                 <para>
243                     <literal>SCILAB_sod_version</literal> - описывает
244                     какая версия спецификации SOD использовалась для
245                     сохранения файла.
246                 </para>
247                 <para>
248                     Например, для Scilab 5.4.0 эти данные будут иметь вид:
249                 </para>
250                 <para>
251                     <emphasis>SCILAB_sod_version = 2</emphasis>
252                 </para>
253             </listitem>
254         </itemizedlist>
255         <para>
256             Типы, данные которых сохраняются непосредственно в набор
257             данных.
258         </para>
259         <informaltable border="1">
260             <tbody>
261                 <tr>
262                     <td align="left">
263                         <emphasis role="bold">Тип Scilab'а</emphasis>
264                     </td>
265                     <td align="left">
266                         <emphasis role="bold">Атрибут HDF5 типа Scilab'а</emphasis>
267                     </td>
268                     <td align="left">
269                         <emphasis role="bold">Атрибуты HDF5</emphasis>
270                     </td>
271                     <td align="left">
272                         <emphasis role="bold">Расположение типов данных HDF</emphasis>
273                     </td>
274                 </tr>
275                 <tr>
276                     <td align="left">
277                         <para>string</para>
278                     </td>
279                     <td align="left">
280                         <para>SCILAB_Class = string</para>
281                     </td>
282                     <td align="left">
283
284                     </td>
285                     <td align="left">
286                         <para>строковое значение</para>
287                     </td>
288                 </tr>
289                 <tr>
290                     <td align="left">
291                         <para>boolean</para>
292                     </td>
293                     <td namest="c2" nameend="c3" align="left">
294                         <para>SCILAB_Class = boolean</para>
295                     </td>
296                     <td align="left">
297
298                     </td>
299                     <td align="left">
300                         <para>32-битное целое число</para>
301                     </td>
302                 </tr>
303                 <tr>
304                     <td align="left">
305                         <para>integer</para>
306                     </td>
307                     <td namest="c2" nameend="c3" align="left">
308                         <para>SCILAB_Class = integer</para>
309                     </td>
310                     <td align="left">
311                         <para>SCILAB_precision = {8, 16, 32, u8, u16, u32}</para>
312                     </td>
313                     <td namest="c1" nameend="c2" align="left">
314                         <para>8 = 8-битный символ</para>
315                         <para>16 = 16-битное целое число</para>
316                         <para>32 = 32-битное целое число</para>
317                         <para>u8 = 8-битное целое беззнаковое число</para>
318                         <para>u16 = 16-битное целое беззнаковое число</para>
319                         <para>u32 = 32-битное целое беззнаковое число</para>
320                     </td>
321                 </tr>
322             </tbody>
323         </informaltable>
324         <para>
325             Для этих типов, как в Scilab'е, данные хранятся в одномерном
326             массиве. Данные сохраняются столбец на столбцом.
327         </para>
328         <para>
329             Для восстановления матрицы, вектора или скаляра, два
330             атрибута дают количество столбцов и строк.
331         </para>
332         <para>
333             Начиная с релиза 5.4.0 Scilab'а и SOD v2, <literal>SCILAB_cols</literal> и
334             <literal>SCILAB_rows</literal> больше не используются для
335             матриц типа double, integer, polynomial и string. SOD
336             использует родную многомерную возможность HDF5.
337         </para>
338         <para>
339             <emphasis role="bold">Пример</emphasis>
340         </para>
341         <para>
342             Сохранение декларации: <code>int32([1 -4 7;-9 6 -3])</code>
343             будет отображено как:
344         </para>
345         <mediaobject>
346             <imageobject>
347                 <imagedata fileref="../images/img002.png"/>
348             </imageobject>
349         </mediaobject>
350         <para>в hdfview.</para>
351         <para>А метаданные будут отображены как:</para>
352         <emphasis role="italic">
353             <para>int32matrix (800, 2)</para>
354             <para>32-bit integer, 3 x 2 =&gt; размер переменной</para>
355             <para>Number of attributes = 2</para>
356             <para>SCILAB_Class = integer</para>
357             <para>SCILAB_precision = 32</para>
358         </emphasis>
359         <para>
360             <note>
361                 Скалярное значение хранится в виде матрицы размером 1 на 1.
362             </note>
363         </para>
364         <para>
365             Пустая переменная (<literal>[]</literal>) будет иметь
366             атрибут <literal>SCILAB_empty</literal>, установленный в
367             значение ИСТИНА.
368         </para>
369         <para>
370             <emphasis role="bold">Типы, в которых данные хранятся в
371                 соответствующей группе
372             </emphasis>
373         </para>
374         <para>
375             Многие типы данных Scilab'а хранятся с помощью групп. Это
376             позволяет не только явно разделять значения, но и иметь
377             лёгкий доступ к ним.
378         </para>
379         <para>
380             Группы именуются по переменным, заключённым в знак "#".
381             Например, для матрицы значений типа double, названной
382             matrixofdouble, имя корневого набора данных будет
383             matrixofdouble, имя связанной с ней группы будет <emphasis
384             role="strong">#matrixofdouble#</emphasis>.
385         </para>
386         <para>
387             Для рекурсивного типа данных (list, mlist, tlist и т. д.)
388             имена подгрупп построены следующим образом:
389         </para>
390         <para>
391             Знак <literal>#</literal> позволяет создавать уникальный
392             идентификатор. Количество начальных знаков
393             <literal>#</literal> показывает уровень глубины.
394             Следовательно подсписок
395             <emphasis>###listnested#_#2##_#1##</emphasis> будет
396             указывать, что он помещён на второй уровень.
397         </para>
398         <para>
399             Символ подчёркивания "_" является способом представить
400             глубину. Обычно в таких случаях используется символ "/", но
401             это зарезервированное ключевое слово в спецификации HDF5.
402         </para>
403         <para>
404             Целые числа, используемые в названии, показывают положение в
405             структуре данных, оба в терминах положения в текущей
406             структуре, но также относительно родительского элемента. В
407             примере <emphasis>###listnested#_#2##_#1##</emphasis>, 1
408             показывает, что мы имеем дело со вторым элементом третьей
409             структуры главного элемента (элементы индексируются начиная
410             с 0).
411         </para>
412         <para>
413             В следующем примере, группа, названная
414             <emphasis>###listnested#_#2##_#1##</emphasis>,
415             будет указывать на значение [32, 42]:
416         </para>
417         <programlisting>
418             listnested=list(2,%i,'f',ones(3,3))
419             listnested(3) = list( %t, [32,42]);
420         </programlisting>
421         <para>
422             <emphasis role="bold">Разрежённая матрица</emphasis>
423         </para>
424         <para>
425             <emphasis role="strong">Тип Scilab'а:</emphasis> sparse
426         </para>
427         <para>
428             <emphasis role="strong">атрибут HDF5 типа
429                 Scilab'а:
430             </emphasis>
431             SCILAB_Class = sparse
432         </para>
433         <para>
434             <emphasis role="strong">атрибуты HDF5: </emphasis>
435         </para>
436         <para>SCILAB_rows = &lt;int&gt;</para>
437         <para>Количество строк</para>
438         <para>
439             <emphasis>SCILAB_cols = &lt;int&gt;</emphasis>
440         </para>
441         <para>Количество столбцов</para>
442         <para>
443             <emphasis>SCILAB_items = &lt;int&gt;</emphasis>
444         </para>
445         <para>
446             Определение количества элементов разрежённой матрице
447         </para>
448         <para>
449             <emphasis role="strong">Значения корневого набора данных:</emphasis>
450         </para>
451         <para>
452             Первое значение (<literal>#0#</literal>): каждый элемент из
453             этой структуры данных показывает количество ненулевых
454             элементов на строку. Следовательно, первый элемент
455             показывает количество элементов в первой строке разрежённой
456             матрицы.
457         </para>
458         <para>
459             Второе значение (<literal>#1#</literal>): указывает
460             положение столбца каждого элемента разрежённой матрицы.
461         </para>
462         <para>
463             Третье значение (<literal>#2#</literal>): хранит ссылку на
464             фактические значения элементов в разрежённой матрице (каждое
465             будет сохранено в особой группе).
466         </para>
467         <para>Например, взяв такую матрицу:</para>
468         <programlisting role="no-scilab-exec">
469             0. 1. 0. 0. 0. 0. 0. 0. 0. 0.
470             0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
471             0. 0. 0. 0. 0. 0. 0. 0. 0. 3.
472             0. 0. 0. 0. 2. 0. 0. 0. 0. 0.
473         </programlisting>
474         <para>которая формируется функцией:</para>
475         <programlisting role="scilab_code">
476             sparse([1,2;4,5;3,10],[1,2,3])
477         </programlisting>
478         <para>
479             будем иметь:
480         </para>
481         <para>
482             <emphasis>#0#</emphasis> содержит <emphasis>1;0;1;1</emphasis>
483         </para>
484         <para>
485             <emphasis>#1#</emphasis> содержит <emphasis>2;10;5</emphasis>
486         </para>
487         <para>
488             <emphasis>#2#</emphasis> обращается к матрице чисел типа
489             double (в этом примере они не комплексные), которая содержит
490             <emphasis>1.0; 3.0; 2.0</emphasis>.
491         </para>
492         <para>
493             <emphasis role="bold">Разрежённая матрица логических значений</emphasis>
494         </para>
495         <para>
496             <emphasis role="strong">Тип Scilab'а:</emphasis> boolean sparse
497         </para>
498         <para>
499             <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis> SCILAB_Class = boolean sparse
500         </para>
501         <para>
502             <emphasis>атрибуты HDF5:</emphasis>
503         </para>
504         <para>
505             <emphasis>SCILAB_rows = &lt;int&gt;</emphasis>
506         </para>
507         <para>Количество строк</para>
508         <para>
509             <emphasis>SCILAB_cols = &lt;int&gt;</emphasis>
510         </para>
511         <para>Количество столбцов</para>
512         <para>
513             <emphasis>SCILAB_items = &lt;int&gt;</emphasis>
514         </para>
515         <para>
516             Определение количества элементов в разрежённой матрице
517         </para>
518         <para>
519             <emphasis role="strong">Значения корневого набора
520                 данных:
521             </emphasis>
522             в то время как разрежённая матрица имеет
523             3 набора данных, разрежённая матрица логических значений
524             имеет только 2, поскольку определяемые значения
525             автоматически рассматриваются как истинные.
526         </para>
527         <para>
528             Первое значение (<literal>#0#</literal>): каждый элемент
529             этой структуры данных показывает количество ненулевых
530             элементов в строке.
531         </para>
532         <para>
533             Следовательно, первый элемент показывает количество
534             элементов в первой строке разрежённой матрицы.
535         </para>
536         <para>
537             Второе значение (<literal>#1#</literal>): указывает
538             положение столбца каждого из элементов разрежённой матрицы.
539         </para>
540         <para>В разрежённой матрице логических значений:</para>
541         <programlisting>
542             dense=[%F, %F, %T, %F, %F
543             %T, %F, %F, %F, %F
544             %F, %F, %F, %F, %F
545             %F, %F, %F, %F, %T];
546         </programlisting>
547         <para>
548             <emphasis>#0#</emphasis> содержит <emphasis>1;1;0;1</emphasis>.
549         </para>
550         <para>
551             <emphasis>#1#</emphasis> содержит <emphasis>3;1;5</emphasis>.
552         </para>
553         <para>
554             Для восстановления разрежённой матрицы логических значений
555             требуется только два значения.
556         </para>
557         <para>
558             <emphasis role="bold">Расположение типов данных
559                 HDF
560             </emphasis>
561             :32-битное целое
562         </para>
563         <para>
564             <emphasis role="bold">Числа удвоенной точности</emphasis>
565         </para>
566         <para>
567             <emphasis role="strong">Тип Scilab'а:</emphasis> double
568         </para>
569         <para>
570             <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis> SCILAB_Class = double
571         </para>
572         <para>
573             <emphasis role="strong">Значения корневого набора данных:</emphasis>
574         </para>
575         <para>
576             Как вещественные так и комплексные значения хранятся в
577             группе, именуемой <literal>#&lt;имя переменной&gt;#</literal>.
578         </para>
579         <para>
580             Первое значение: ссылка на вещественные значения. Названо
581             <literal>#0#</literal>.
582         </para>
583         <para>
584             Если матрица комплексная, то второе значение будет ссылаться
585             на комплексные значения. Названо <literal>#1#</literal>.
586         </para>
587         <para>
588             <emphasis role="bold">Расположение типов данных
589                 HDF
590             </emphasis>
591             64-битное с плавающей запятой
592         </para>
593         <para>
594             <emphasis role="bold">Полином</emphasis>
595         </para>
596         <para>
597             <emphasis role="strong">Тип Scilab'а:</emphasis> polynomial
598         </para>
599         <para>
600             <emphasis role="strong">атрибут HDF5 типа
601                 Scilab'а:
602             </emphasis>
603             SCILAB_Class = polynomial
604         </para>
605         <para>
606             <emphasis role="strong">атрибуты HDF5: </emphasis>
607         </para>
608         <para>SCILAB_Class = polynomial</para>
609         <para>SCILAB_varname = &lt;string&gt;</para>
610         <para>Имя символьной переменной</para>
611         <para>
612             <emphasis>SCILAB_Complex = &lt;boolean&gt;</emphasis>
613         </para>
614         <para>
615             Если полином комплексный (не устанавливается, если ложь).
616         </para>
617         <para>
618             <emphasis role="strong">Значения корневого набора
619                 данных:
620             </emphasis>
621         </para>
622         <para>
623             Коэффициенты хранятся в виде матрицы чисел удвоенной
624             точности (сравни соответствующий раздел, посвящённый
625             хранению чисел удвоенной точности). Интересно отметить, что
626             коэффициенты могут быть комплексными и, следовательно, могут
627             храниться в виде матрицы комплексных значений. Правила
628             наименования (под-)групп и набора данных описаны в начале
629             этого раздела.
630         </para>
631         <para>
632             <emphasis role="bold">Расположение типов данных HDF</emphasis> ссылка на объект
633         </para>
634         <para>
635             <emphasis role="bold">Список</emphasis>
636         </para>
637         <para>
638             <emphasis role="strong">Тип Scilab'а:</emphasis> list
639         </para>
640         <para>
641             <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
642         </para>
643         <para>SCILAB_Class = list</para>
644         <para>
645             <emphasis role="strong">атрибуты HDF5:</emphasis>
646             SCILAB_items = &lt;количество пунктов в списке&gt;
647         </para>
648         <para>
649             <emphasis role="strong">Значения корневого набора данных:</emphasis>
650         </para>
651         <para>
652             Привязанные к корневому набору данных значения хранятся в
653             этом наборе и являются ссылками на значения, хранимые в
654             списке. Значения хранятся в группе, названной
655             <literal>#&lt;имя переменной&gt;#</literal>. В группе
656             <literal>#&lt;имя переменной&gt;#</literal> данные могут
657             быть любого типа. Они прямо включены в группу. Их
658             представления те же самые, что и в других случаях,
659             основанных на рекурсивной структуре (имеется в виду, что
660             можно сохранить и загрузить список списка списка различных
661             типов).
662         </para>
663         <para>
664             Правила наименования (под-)групп и набора данных описаны в
665             начале этого раздела.
666         </para>
667         <para>
668             <emphasis role="bold">Расположение типов данных HDF</emphasis> ссылка на объект
669         </para>
670         <para>
671             <emphasis role="bold">Типизированный список</emphasis>
672         </para>
673         <para>
674             <emphasis role="strong">Тип Scilab'а:</emphasis> tlist
675         </para>
676         <para>
677             <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
678         </para>
679         <para> SCILAB_Class = tlist</para>
680         <para>
681             <emphasis role="strong">атрибуты HDF5:</emphasis> см. список
682         </para>
683         <para>
684             <emphasis role="bold">матричноориентированный список</emphasis>
685         </para>
686         <para>
687             <emphasis role="strong">Тип Scilab'а:</emphasis> mlist
688         </para>
689         <para>
690             <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
691         </para>
692         <para>SCILAB_Class = mlist</para>
693         <para>
694             <emphasis role="strong">атрибуты HDF5:</emphasis> см. список
695         </para>
696         <para>
697             <emphasis role="bold">Пустое значение</emphasis>
698         </para>
699         <para>
700             <emphasis role="strong">Тип Scilab'а:</emphasis> void
701         </para>
702         <para>
703             <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
704         </para>
705         <para>SCILAB_Class = void</para>
706         <para>
707             Пустое значение можно найти только в очень особых случаях
708             использования списков, типизированных списков и
709             матричноориентированных списков. Оно может быть создано с
710             помощью следующего синтаксиса:
711         </para>
712         <programlisting>voidelement_ref=list(1,,3);</programlisting>
713         <para>
714             <emphasis role="bold">Неопределённое значение</emphasis>
715         </para>
716         <para>
717             <emphasis role="strong">Тип Scilab'а:</emphasis> undefined
718         </para>
719         <para>
720             <emphasis role="strong">атрибут HDF5 типа Scilab'а:</emphasis>
721         </para>
722         <para> SCILAB_Class = undefined</para>
723         <para>
724             Неопределённое значение формируется, когда размер списка
725             увеличивается, а некоторые элементы не определены. Они будут
726             сформированы с помощью следующего синтаксиса:
727         </para>
728         <programlisting>
729             undefinedelement_ref=list(2,%i,'f',ones(3,3));
730             undefinedelement_ref(6)="toto"
731         </programlisting>
732     </refsection>
733     <refsection>
734         <title>Примеры из жизни</title>
735         <para>
736             Файлы с образцами всех этих переменных прилагаются к
737             дистрибутиву Scilab'а. Они лежат в директории:
738             <emphasis>SCI/modules/hdf5/tests/sample_scilab_data/</emphasis>
739         </para>
740         <para>
741             На момент редактирования этого документа были приложены
742             следующие файлы:
743         </para>
744         <emphasis role="italic">
745             <para>
746                 booleanmatrix.sod
747             </para>
748             <para>booleanscalar.sod
749             </para>
750             <para>booleansparse.sod
751             </para>
752             <para>emptymatrix.sod
753             </para>
754             <para>emptysparse.sod
755             </para>
756             <para>hypermatrixcomplex.sod
757             </para>
758             <para>hypermatrix.sod
759             </para>
760             <para>int16.sod
761             </para>
762             <para>int32.sod
763             </para>
764             <para>int8.sod
765             </para>
766             <para>listnested.sod
767             </para>
768             <para>list.sod
769             </para>
770             <para>matricedoublecomplexscalar.sod
771             </para>
772             <para>matricedoublecomplex.sod
773             </para>
774             <para>matricedoublescalar.sod
775             </para>
776             <para>matricedouble.sod
777             </para>
778             <para>matricestringscalar.sod
779             </para>
780             <para>matricestring.sod
781             </para>
782             <para>mlist.sod
783             </para>
784             <para>polynomialscoef.sod
785             </para>
786             <para>polynomials.sod
787             </para>
788             <para>sparsematrix.sod
789             </para>
790             <para>tlist.sod
791             </para>
792             <para>uint16.sod
793             </para>
794             <para>uint32.sod
795             </para>
796             <para>uint8.sod
797             </para>
798             <para>undefinedelement.sod
799             </para>
800             <para>voidelement.sod
801             </para>
802         </emphasis>
803     </refsection>
804     <refsection>
805         <title>История развития формата</title>
806         <informaltable border="1">
807             <tbody>
808                 <tr>
809                     <td align="justify">
810                         <emphasis role="bold">Версия SOD</emphasis>
811                     </td>
812                     <td align="justify">
813                         <emphasis role="bold">Версия Scilab'а</emphasis>
814                     </td>
815                     <td align="justify">
816                         <emphasis role="bold">Описание</emphasis>
817                     </td>
818                 </tr>
819                 <tr>
820                     <td align="center">
821                         <para>0</para>
822                     </td>
823                     <td align="center">
824                         <para>5.2.0</para>
825                     </td>
826                     <td align="justify">
827                         <para>Начальная версия формата Scilab/HDF5</para>
828                     </td>
829                 </tr>
830                 <tr>
831                     <td align="center">
832                         <para>1</para>
833                     </td>
834                     <td align="center">
835                         <para>5.4.0 alpha / beta</para>
836                     </td>
837                     <td align="left">
838                         <para>
839                             Формат по умолчанию для загрузки и сохранения.
840                         </para>
841                         <para>
842                             Предыдущий формат (.bin) по-прежнему поддерживается.
843                         </para>
844                     </td>
845                 </tr>
846                 <tr>
847                     <td>
848                         <para>2</para>
849                     </td>
850                     <td>
851                         <para>5.4.0</para>
852                     </td>
853                     <td>
854                         <para>
855                             Для матриц значений тип double, integer, polynomial и string
856                             <emphasis>SCILAB_cols</emphasis> / <emphasis>SCILAB_rows</emphasis> были
857                             удалены, чтобы использовать многомерные HDF5.
858                         </para>
859                     </td>
860                 </tr>
861                 <tr>
862                     <td align="center">
863                         3
864                     </td>
865                     <td align="center">
866                         <para>6.0.0</para>
867                     </td>
868                     <td align="justify">
869                         <para>.bin не поддерживается.</para>
870                     </td>
871                 </tr>
872             </tbody>
873         </informaltable>
874     </refsection>
875     <refsection role="see also">
876         <title>Смотрите также</title>
877         <simplelist type="inline">
878             <member>
879                 <link linkend="save">save</link>
880             </member>
881             <member>
882                 <link linkend="load">load</link>
883             </member>
884             <member>
885                 <link linkend="listvarinfile">listvarinfile</link>
886             </member>
887             <member>
888                 <link linkend="type">type</link>
889             </member>
890             <member>
891                 <link linkend="typeof">typeof</link>
892             </member>
893         </simplelist>
894     </refsection>
895 </refentry>