Матрицы могут реализовываться с помощью различных компонентов, поддерживающих интерфейс 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 метода, в котором эта матрица является выходным параметром и сохраняет его. При повторном чтении того же элемента используется сохраненное значение. Запись в такую матрицу запрещена.