Матрицы могут реализовываться с помощью различных компонентов, поддерживающих интерфейс ImaMatrix. Для создания матриц служит интерфейс ImaMatrixFactory.

Создать новую матрицу можно с помощью компонента MaMatrixFactory с интерфейсом ImaMatrixFactory. Интерфейс содержит единственную функцию

HRESULT Create([in] maType type,[out,retval] ImaMatrix** intf)
Создание новой, пустой матрицы с типа type. Поле type может содержать комбинацию одного из флагов (MA_DOUBLE, MA_STRING,MA_LONG, MA_BOOLEAN и MA_BYTE) для указания типа данных с флагами MA_SPARSE и MA_EVAL. Возвращает указатель на созданную матрицу или NULL, если матрица с таким типом не может быть создана.
Не все комбинации флагов поддерживаются. Возможные типы матриц представлены в таблице.

Флаг MA_SPARSEФлаг MA_EVALВозможные значения флага типапримечание
НетНетЛюбой Обычная 'плотная' матрица
ДаНетMA_DOUBLE и MA_STRING Разреженная матрица
НетДаЛюбой Вычисляемая матрица. При чтении значения из нее обращается к функции CalcCell метода, в котором эта матрица является выходным параметром. Запись в такую матрицу запрещена.
ДаДаВ разработке Вычисляемая матрица. При первом чтении значения из нее обращается к функции CalcCell метода, в котором эта матрица является выходным параметром и сохраняет его. При повторном чтении того же элемента используется сохраненное значение. Запись в такую матрицу запрещена.