Exemplo n.º 1
0
        /// <summary>
        /// Импорт матрицы из файла XML
        /// </summary>
        /// <param name="fileName"></param>
        public static MatrixCSR ImportFromXml(string fileName)
        {
            // передаем в конструктор тип класса
            XmlSerializer formatter = new XmlSerializer(typeof(MatrixCSR));

            using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                MatrixCSR data = (MatrixCSR)formatter.Deserialize(fs);
                return(data);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Возвращает матрицу в формате CSR
        /// </summary>
        /// <returns></returns>
        public async Task <MatrixCSR> ConvertMatrixToCsrFormat()
        {
            MatrixCSR matrixCsr = new MatrixCSR();
            int       numRows   = await GetNumRowsAsync();

            matrixCsr.NumRows = numRows;
            int numCols = await GetNumColsAsync();

            matrixCsr.NumCols = numCols;

            List <double> listCsrValA    = new List <double>();
            List <int>    listCsrColIndA = new List <int>();

            int nnzElCounter = 0;

            for (int i = 0; i < matrixCsr.NumRows; i++)
            {
                matrixCsr.CsrRowPtrA[i] = nnzElCounter;
                double[] rowData = await GetRowAsync(i);

                for (int colIndex = 0; colIndex < rowData.Length; colIndex++)
                {
                    if (rowData[colIndex] > double.Epsilon || rowData[colIndex] < -double.Epsilon)
                    {
                        listCsrValA.Add(rowData[colIndex]);
                        listCsrColIndA.Add(colIndex);
                        nnzElCounter++;
                    }
                }
            }
            matrixCsr.CsrRowPtrA[numRows] = nnzElCounter;

            matrixCsr.CsrValA    = listCsrValA.ToArray();
            matrixCsr.CsrColIndA = listCsrColIndA.ToArray();

            return(matrixCsr);
        }