Класс определяет свойство по умолчанию Items для создания индекса и свойства для считывания/записи элементов.
Свойства и функции класса TmaMatrix


constructor Create(_Type:maType;Sizes:array of integer)
Создание новой матрицы с заданным типом элементов и размерами, заданными массивом sizes.

Параметры:

_Type тип создаваемой матрицы. Должен содержать комбинацию одного из флагов (MA_DOUBLE, MA_STRING, MA_LONG, MA_BOOLEAN и MA_BYTE) для указания типа данных с флагами MA_SPARSE и MA_EVAL. О значении флагов смотри в описании интерфейса ImaMatrixFactory

Sizes размеры создаваемой матрицы. Если массив sizes пустой (Sizes = []), то создается пустая матрица, что удобно,например, при чтении матрицы из потока.

constructor Create(_Type: maType; Sizes: array of integer;
   Name: WideString; maxSize: integer = 0)
Функция позволяет создавать и использовать матрицы, размещенные в разделяемой памяти.

Параметры:

_type тип создаваемой матрицы. Должен содержать комбинацию одного из флагов (MA_DOUBLE, MA_STRING, MA_LONG, MA_BOOLEAN и MA_BYTE) для указания типа данных с флагами MA_SPARSE и MA_EVAL. О значении флагов смотри в описании интерфейса ImaMatrixFactory

Sizes размеры создаваемой матрицы
Name имя блока разделяемой памяти, в котором находится матрица
maxSize размер блока памяти под матрицу

constructor Create(matrix:ImaMatrix)
Присоедимяет класс к уже существующему интерфейсу.

Параметры:

matrix указатель на существующий интерфейс

constructor Create(cell:TmaCell)
Присоедняет класс к интерфейсу матрицы, хранящейся в ячейке cell.

Параметры:

cell ячейка, из которой копируется значение

procedure Resize(sizes:array of integer)
Изменяет размер матрицы на новый, заданный массивом sizes. Все содержимое матрицы при этом теряется.

Параметры:

Sizes новые размеры матрицы

procedure Clear
Функция очищает матрицу, заполняя ее пустыми значениями или значениями по умолчанию. Размеры матрицы не меняются.
property _Type:Cardinal
Свойство только для чтения. Возвращает тип значений, хранящихся в матрице.
property Dim:integer
Свойство только для чтения. Возвращает размерность матрицы.

Возвращаемое значение:

Размерность матрицы или 0, если указатель на интерфейс, хранящийся в матрице, равен nil.
property Size[dim:integer]:integer
Свойство только для чтения. Возвращает размер матрицы по заданной координате.

Параметры:

dim координата, по которой возвращается размерность

Возвращаемое значение:

Размер матрицы по координате dim или 0, если dim больше размерности матрицы.
property Items[index:integer]:TmaMatrix ; default
Свойство только для чтения. Добавляет значение index к текущему индексу и возвращает Self. Это позволяет формировать индекс оператором вида "Matrix[2][10].AsDouble=...".

Параметры:

index очередная координата индекса

property AsDouble: Double
property AsLong: Integer
property AsString: WideString
property AsBoolean: Boolean
Используется для считывания и записи значений по текущему индексу. После вызова текущий индекс очищается. Эти свойства можно использовать в матрицах любого типа, при этом значение преобразуется к нужному типу.
property Cell:TmaCell
Используется для считывания и записи значений по текущему индексу. После вызова текущий индекс очищается. Третье свойство при чтении выдает ячейку с типом данных, в котором значение хранится в матрице, а при записи так же преобразуется к типу данных иатрицы.
Вещественные и строковые матрицы могут содержать "пустые" значения, которые используются, например, для обозначения пропусков в данных. При инициализации матрицы все ее элементы устанавливаются "пустыми". При пустого считывании значения выдается константа, задаваемая функциями SetEmptyDoubleValue, SetEmptyStringValue и SetEmptyLongValue для считывания свойств AsDouble, AsString и AsLong соответственно. Целочисленные и булевские матрицы не поддерживают пустые значения и при создании инициализируются нулями или значением false.
procedure SetEmpty
Функция записывает в матрицу пустое значение. Если матрица не поддерживает пустые значения, то вызовы функции игнорируются.
function IsEmpty:boolean
Функция проверяет, будет ли значение ячейки матрицы пустым. Если матрица не поддерживает пустые значения, то функция возвращает false
property EmptyDoubleValue:double
property EmptyLongValue:integer
property EmptyStringValue:WideString
Свойства Позволяют считывать и записывать константы, которые играют роль "пустых" значений. Эти константы выдаются, если считываемое из матрицы значение пустое. Эти константы не являются глобальными и их можно изменять в процессе работы с матрицей, при этом пустые значения в матрице остаются пустыми. При установке любого из свойств EmptyDoubleValue и EmptyLongValue оба этих свойства изменяются.

По умолчанию эти константы равны NaN для чисел и пустая строка для строк.

Если матрица не поддерживает пустые значения, то вызовы функции игнорируются.


procedure CacheMatrix(cacheMode:byte; source: TmaMatrix)
Функция позволяет использовать данную матрицу как буфер для матрицы source или отключить буферизацию, если source=nil. При включении буферизации все данные в матрице уничтожаются и размер матрицы становится равным размеру source. Параметр cacheMode выбирает режим буферизации:
MA_CACHE_READ
Будет создан буфер для чтения и содержимое матрицы source будет прочитано в данную матрицу.


MA_CACHE_WRITE
Будет создан буфер для записи. При вызове функции Commit матрица source будет очищена и затем в нее будет записано содержимое данной матрицы.


MA_CACHE_WRITE_THROUGH
Будет создан буфер для записи. При каждой операции записи в данную матрицу значение сразу же будет скопровано и в матрицу source. Вызывать функцию Commit не нужно.


MA_CACHE_WRITE_APPEND
Будет создан буфер для записи. При вызове функции Commit все непустые элементы данной матрицы будут записаны в матрицу source.
Эта функция будет полезна при написании библиотек алгоритмов в методах, которые в процессе вычислений записывают данные во входные матрицы или считывают их из выходных матриц.

Параметры:

cacheMode режим буферизации
source буферизируемая матрица

procedure Commit
Функция передает данные в/из буферизуемой матрицы. Конкретное действие этой функции зависит от режима буферизации:
MA_CACHE_READ
Содержимое буферизуемой матрицы будет повторно прочитано в данную матрицу.


MA_CACHE_WRITE
Матрица source будет очищена и затем в нее будет записано содержимое данной матрицы.


MA_CACHE_WRITE_APPEND
Все непустые элементы данной матрицы будут записаны в матрицу source. Содержимое ячеек буферизуемой матрицы, соответствующх пустым элементам данной матрицы, не изменяется.

Пример.

Создание и заполнение двумерной числовой матрицы


var X:TmaMatrix;
...
X:=TmaMatrix(MA_DOUBLE,[168,7]);
for i:=0 to X.Size[0] do
  for j:=0 to X.Size[1] do
    X[i][j].AsDouble:=i+j;