Пример #1
0
        /// <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();
        }
Пример #2
0
        /// <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];