示例#1
0
        public TextMessageForm(Form backForm, GeneratorMatrix matrix)
        {
            InitializeComponent();
            _generatorMatrix = matrix;
            _backForm        = backForm;

            _encoder = new Encoder(_generatorMatrix);
            _decoder = new Decoder(_generatorMatrix);
        }
示例#2
0
        /// <summary>
        /// Clear old matrixes and calculate generator and identity matrixes before launching next view.
        /// </summary>
        private void ContinueBtn_Click(object sender, EventArgs e)
        {
            var m = decimal.ToInt32(mValue.Value);

            GeneratorMatrix.PrepareMatrixes(m);
            HadamardTransformMatrix.PrepareHadamardTransformMatrixes(m);

            new MainView(this, m).Show();
            Hide();
        }
        public SingleVectorMessageForm(GeneratorMatrix matrix, Form backForm)
        {
            InitializeComponent();
            _generatorMatrix = matrix;
            _backForm        = backForm;

            _encoder = new Encoder(_generatorMatrix);
            _decoder = new Decoder(_generatorMatrix);

            labelRequiredSize.Text = $"Required size: {_generatorMatrix.EncodableVectorSize}";
        }
示例#4
0
        /// <summary>
        /// Encode vector of m+1 length using Reed Muller's code with parameter m.
        /// Vector is multiplied with Generator matrix G(1,m)
        /// </summary>
        /// <param name="vector">Vector to encode</param>
        /// <param name="m">Code parameter m</param>
        /// <returns>Encoded vector</returns>
        public static Vector EncodeSingleVector(Vector vector, int m)
        {
            GeneratorMatrix.GeneratorMatrixes.TryGetValue(m, out int[,] generatorMatrix);
            var encodedVectorLength = GeneratorMatrix.GetMatrixDimensions(m).columns;

            var resultArray = new int[encodedVectorLength];

            for (int i = 0; i < m + 1; i++)
            {
                for (int j = 0; j < encodedVectorLength; j++)
                {
                    resultArray[j] += vector.Data[i] == 0 ? 0 : generatorMatrix[i, j];
                }
            }
            for (int i = 0; i < encodedVectorLength; i++)
            {
                resultArray[i] = resultArray[i] % 2;
            }
            return(new Vector(resultArray));
        }
示例#5
0
 public ScenarioChoice(Form previous, int m, int r)
 {
     InitializeComponent();
     _previous        = previous;
     _generatorMatrix = new GeneratorMatrix(r, m);
 }