/// <summary> /// Initializes a new instance of the <see cref="TableAdapter"/> class. /// </summary> /// <param name="array">Source table object.</param> public TableAdapter(IArray array) { matObject = array as IMatObject; if (matObject?.ClassName != "table") { throw new ArgumentException("The object provided is not a table."); } var cellArray = matObject["varnames"] as ICellArray; VariableNames = Enumerable .Range(0, cellArray.Count) .Select(i => (cellArray[i] as ICharArray).String) .ToArray(); NumberOfVariables = VariableNames.Length; var props = matObject["props"] as IStructureArray; Description = (props["Description"] as ICharArray).String; NumberOfRows = (int)matObject["nrows"].ConvertToDoubleArray()[0]; var rowNamesArrays = matObject["rownames"] as ICellArray; RowNames = Enumerable .Range(0, rowNamesArrays.Count) .Select(i => (cellArray[i] as ICharArray).String) .ToArray(); }
/// <summary> /// Initializes a new instance of the <see cref="TableAdapter"/> class. /// </summary> /// <param name="array">Source table object.</param> public TableAdapter(IArray array) { matObject = array as IMatObject ?? throw new HandlerException("Table adapter must be initialized with a MATLAB object."); if (matObject.ClassName != "table") { throw new ArgumentException("The object provided is not a table."); } var cellArray = matObject["varnames"] as ICellArray ?? throw new HandlerException("Table variable names must be in a cell array."); VariableNames = Enumerable .Range(0, cellArray.Count) .Select(i => (cellArray[i] as ICharArray ?? throw new HandlerException("Variable name must be a char array.")).String) .ToArray(); NumberOfVariables = VariableNames.Length; var props = matObject["props"] as IStructureArray ?? throw new HandlerException("Table properties must be a structure array."); Description = (props["Description"] as ICharArray ?? throw new HandlerException("Table description must be a char array.")).String; NumberOfRows = (int)(matObject["nrows"].ConvertToDoubleArray() ?? throw new HandlerException("Cannot find number of rows in a table."))[0];