Ejemplo n.º 1
0
        public void StartGenerator(int count, Mode mode, PRNGMode rngMode) //будет вызываться от созданного экземпляра и запускать процесс генерации последовательности наблюдений
        {
            int n            = A.GetLength(0);
            int state_number = ProbabilityMethod(Pi, rngMode);

            double[] Farr          = ProbabilityFromDistribution(F[state_number]);
            int      period_length = F[state_number][ProbabilityMethod(Farr, rngMode)].value;

            int stop = (count - period_length >= 0) ? period_length : count;

            if (File.Exists("res.txt"))
            {
                File.Delete("res.txt");
            }
            if (mode == HSMPQApplication.Mode.Test)
            {
                if (File.Exists("sost.txt"))
                {
                    File.Delete("sost.txt");
                }
                if (File.Exists("sostdur.txt"))
                {
                    File.Delete("sostdur.txt");                            //тут будут пары (состояние длительность)
                }
            }
            PQN_Method(state_number, period_length, stop, mode, rngMode);
            OutStreamer OutStream = new OutStreamer("sostdur.txt");

            OutStream.StringToFile(state_number + ";" + period_length);
            for (int counter = period_length; counter < count; counter++)// counter = period_length
            {
                double[] StolbecP = new double[n];
                StolbecP     = MatrToArr(A, state_number);
                state_number = ProbabilityMethod(StolbecP, rngMode);

                Farr          = ProbabilityFromDistribution(F[state_number]);
                period_length = F[state_number][ProbabilityMethod(Farr, rngMode)].value;
                stop          = (count - period_length - counter >= 0) ? period_length : count - counter;
                OutStream     = new OutStreamer("sostdur.txt");
                OutStream.StringToFile(state_number + ";" + period_length);
                PQN_Method(state_number, period_length, stop, mode, rngMode);
                counter += period_length - 1;
            }
        }
Ejemplo n.º 2
0
        public void PQN_Method(int state_nubmer, int period_length, int stop, Mode mode, PRNGMode rndMode)
        {
            int L = Ro[state_nubmer].Length;

            double[] p = new double[period_length];//вероятность ошибки в момент j
            double[] Fi;
            if (IfExistsVarPhi(state_nubmer, period_length))
            {
                Fi = VarPhi[state_nubmer][period_length - 1];
            }
            else
            {
                Fi = integral(Ro[state_nubmer], L, period_length);
                VarPhi[state_nubmer][period_length - 1] = Fi;
            }

            for (int j = 0; j < period_length; j++)
            {
                p[j] = Fi[j] * Per[state_nubmer] * period_length;
                //Console.WriteLine(p[j].ToString());
            }
            int k = 0;

            double[] PSmb = MatrToArr(B, state_nubmer);//должен вернуть массив из элементов строки с номером state_nubmer матрицы B
            while (k < stop)
            {
                int OP = BinaryProbabilityMethod(p[k], rndMode);
                int Prob;
                if (OP == 1)
                {
                    Prob = ProbabilityMethod(PSmb, rndMode) + 1;
                }
                else
                {
                    Prob = 0;
                }

                OutStreamer OutStream = new OutStreamer("res.txt");
                OutStream.SymbolToFile(Prob);
                if (mode == HSMPQApplication.Mode.Test)
                {
                    OutStreamer SostStream = new OutStreamer("sost.txt");
                    SostStream.SymbolToFile(state_nubmer);
                }

                k++;
            }
        }
Ejemplo n.º 3
0
        public void PQN_Method(int state_nubmer, int period_length, int stop, Mode mode, PRNGMode rndMode)
        {
            double[] p = new double[period_length];//вероятность ошибки в момент j

            int k = 0;

            double[] PSmb = MatrToArr(B, state_nubmer);//должен вернуть массив из элементов строки с номером state_nubmer матрицы B
            while (k < stop)
            {
                int Prob;
                Prob = ProbabilityMethod(PSmb, rndMode);

                OutStreamer OutStream = new OutStreamer("res.txt");
                OutStream.SymbolToFile(Prob);
                if (mode == HSMPQApplication.Mode.Test)
                {
                    OutStreamer SostStream = new OutStreamer("sost.txt");
                    SostStream.SymbolToFile(state_nubmer);
                }

                k++;
            }
        }