public void criando_dados_para_um_sinal_com_cinco_frames()
        {
            var sinais = DadaUmaColecaoComUmaAmostraDeCincoFrames();
            var sinal = sinais[0];

            var dados = new DadosFramesSinaisDinamicos(sinais);
            dados.Processar();
            var saidasEsperadas = DadasAsSaidasEsperadosParaAColecaoDeSinais(sinais);

            DeveTerExtraidoOsDadosDasAmostras(dados, 1, 1, saidasEsperadas, sinal.Amostras);
        }
        public void criando_dados_para_uma_colecao_de_sinais()
        {
            const int quantidadeDeAmostras = 2;
            const int quantidadeDeSinais = 4;
            var colecaoDeSinais = DadaUmaColecaoDeSinaisComAmostras(quantidadeDeAmostras, quantidadeDeSinais);

            var dados = new DadosFramesSinaisDinamicos(colecaoDeSinais);
            dados.Processar();

            var amostrasEsperadas = ConcatenarAmostrasDosSinais(colecaoDeSinais);
            var saidasEsperadas = DadasAsSaidasEsperadosParaAColecaoDeSinais(colecaoDeSinais);

            DeveTerExtraidoOsDadosDasAmostras(dados, quantidadeDeSinais, quantidadeDeAmostras, saidasEsperadas, amostrasEsperadas);
        }
        public void TreinarAlgoritmoClassificacaoSinaisDinamicos()
        {
            var repositorio = repositorioFactory.CriarECarregarRepositorioDeSinaisDinamicos();

            var algoritmo = algoritmoClassificacaoSinalFactory.CriarClassificadorSinaisDinamicos();
            var algoritmoDeLimitesDeSinaisDinamicos = algoritmoClassificacaoSinalFactory.CriarClassificadorFramesSinaisDinamicos();

            if (repositorio.Any())
            {
                var dadosSinaisDinamicos = new DadosSinaisDinamicos(repositorio);
                using (new MedidorTempo("montar dados de treinamento de sinais dinâmicos."))
                    dadosSinaisDinamicos.Processar();

                using (new MedidorTempo("treinar algoritmo de sinais dinâmicos."))
                    algoritmo.Aprender(dadosSinaisDinamicos);

                var dadosFramesSinaisDinamicos = new DadosFramesSinaisDinamicos(repositorio);
                using (new MedidorTempo("montar dados de treinamento de frames de sinais dinâmicos."))
                    dadosFramesSinaisDinamicos.Processar();

                using (new MedidorTempo("treinar algoritmos de frames sinais dinâmicos."))
                    algoritmoDeLimitesDeSinaisDinamicos.Aprender(dadosFramesSinaisDinamicos);
            }
        }
 private void DeveTerExtraidoOsDadosDasAmostras(DadosFramesSinaisDinamicos dados, int quantidadeDeSinais, 
     int quantidadeDeAmostras, int[] saidasEsperadas, IList<IList<Frame>> amostrasEsperadas)
 {
     dados.CaracteristicasSinais.Should().HaveSameCount(saidasEsperadas);
     dados.IdentificadoresSinais.Should().HaveSameCount(saidasEsperadas);
     dados.IdentificadoresSinais.Should().ContainInOrder(saidasEsperadas);
     dados.QuantidadeClasses.Should().Be(quantidadeDeSinais * 2);
 }