Exemplo n.º 1
0
        // PRIVATE
        /// <summary>
        /// Apskaičiuoja pateikto vektoriaus sindromą.
        /// </summary>
        /// <param name="vector">Vektorius, kurio sindromą norima apskaičiuoti.</param>
        /// <returns>Sindromas.</returns>
        private IList <byte> GetSyndrome(IList <byte> vector)
        {
            if (vector.Count != _cols)
            {
                throw new ArgumentException("\nPaduoto vektoriaus ilgis privalo sutapti su matricos ilgiu.");
            }

            var syndrome = new List <byte>(_rows);

            for (var r = 0; r < _rows; r++)
            {
                var row1 = Matrix[r];
                syndrome.Add(Field.Multiply(row1, vector));
            }
            return(syndrome);
        }
Exemplo n.º 2
0
        // PUBLIC
        /// <summary>
        /// Užkoduoja vektorių pasinaudodamas generuojančia matrica.
        /// </summary>
        /// <param name="vector">Vektorius, kurį reikia užkoduoti.</param>
        /// <returns>Generuojančia matrica užkoduotas vektorius.</returns>
        public IList <byte> Encode(IList <byte> vector)
        {
            if (vector.Count != _rows)
            {
                throw new ArgumentException("\nVektoriaus ilgis privalo sutapti su matricos dimensija.");
            }

            var result = new List <byte>(_cols);

            for (var c = 0; c < _cols; c++)
            {
                var matrixCol = GetColumnAsVector(Matrix, c);
                result.Add(Field.Multiply(matrixCol, vector));
            }
            return(result);
        }