Ir para conteúdo
Fórum Script Brasil

leandro Riato

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Sobre leandro Riato

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

leandro Riato's Achievements

0

Reputação

  1. Estou tendo problemas com o índex de um loop for Algoritmo: similarity = [] sample1 = [] sample2 = [] least_frequent_ = [] engine_phase_high_filtered = [20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 2, 2, 2] def find_least_frequent(filtered_signal): least_frequent_.clear() frequent = mode(filtered_signal) for i in range(0, len(filtered_signal)): if filtered_signal[i] != frequent: least_frequent_.append(i) i = None del i return least_frequent_ def search_by_similarity(leastfreq, filteredsignal): sample1.clear() sample2.clear() fullcycle = [] fullcycle.clear() similarity.clear() for i in range(0, round(len(leastfreq)/2)): for j in range(0, leastfreq[i+1]-1): sample1.append(filteredsignal[j]) j = None for j in range(leastfreq[i+1], leastfreq[i+1] + len(sample1)): sample2.append(filteredsignal[j]) j = None if len(sample1) == len(sample2): for j in range(0, len(sample1)): if sample1[j] == sample2[j]: similarity.append(True) j = None if ((len(similarity)/len(sample1)*100)) >= 95: fullcycle = sample1 i = None return(fullcycle) least_frequent = find_least_frequent(engine_phase_high_filtered) search = search_by_similarity(least_frequent, engine_phase_high_filtered) Preciso que esse algoritmo encontra um ciclo que tenha 95% ou mais de precisão nos valores.
  2. Tenho um arquivo binário que possui dados do tipo: 74 74 74 74 74 74 74 74 74 74 80 8B 8B 8B 8B 8B 8A 8A 8A 8A 8A 8B 8B 8B 8B 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 80 80 8A 8A 8A 8B 8A 8A 8B 8B 8A 8B 8B 8B 8B 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 80 80 8A 8A 8B 8B 8B 8B 8B 8A 8B 8A 8A 8A 8B 7C 74 74 74 74 74 74 74 75 74 74 74 74 74 74 74 80 8B 8B 8B 8B 8B 8A 8A 8B 8B 8B 8B 8B 8B 8B 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 80 8A 8A 8A 8B 8A 8B 8B 8B 8B 8B 8A 8A 8A 8A 74 73 74 74 74 74 74 74 74 74 74 74 74 74 74 80 80 8A 8A 8A 8A 8B 8B 8A 8B 8B 8A 8A 8A 8A 74 74 74 74 74 74 74 73 74 74 73 74 74 74 74 80 80 8A 8A 8B 8B 8B 8B 8B 8B 8B 8A 8B 8A 8A 74 74 74 74 74 74 74 74 74 74 75 74 74 74 74 74 80 8A 8B 8B 8B 8B 8B 8B 8B 8A 8A 8A 8B 8A 8B 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 80 8B 8B 8B 8B 8B 8A 8B 8A 8A 8A 8B 8B 8B 8B 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 80 80 8B 8B 8B 8B 8B 8A 8B 8A 8A 8A 8B 8B 8B 74 74 74 74 74 74 74 74 74 74 74 74 74 74 74 80 80 8B 8B 8B 8B 8B 8B 8A 8A 8A 8B 8A 8C 8B 74 75 74 74 74 74 74 74 74 Eu os coloquei em uma lista, converti para hexadecimal e depois para decimal, trabalhei os dados da forma que eu precisava e agora tenho que voltar para o formato original. Minha lista atual está mais ou menos assim: 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129 Preciso voltar essa lista no formato original para criar um arquivo.bin novamente do jeito que era inicialmente.
  3. KKKKK ta meio complexo mesmo, deixa eu tentar explicar de outra forma, eu tenho uma lista "engine_phase_high" que tem apenas valores 2 valores (0.3 ou 5.4). Em algum momento esses valores se repetem e então um ciclo é completado. Exemplo: [ 5.4, 5,4, 0,3, 0.3, 0.3, 0.3, 0.3, 5.4, 5,4, 0.3, 0.3, 0.3, 0.3, 0.3, 5.4, 5,4, 0.3, 0.3, 0.3, 0.3, 0.3, 5.4, 5,4, 0,3, 0.3, 0.3, 0.3]. Temos um ciclo aqui de [0.3, 0.3, 0.3, 0.3, 5.4, 5,4, 0.3], depois isso só se repete. Mas esse momento que eles se repetem não é sempre o mesmo, ele depende do arquivo que eu escolho parar ler, então eu preciso de um algoritmo pra percorrer essa lista e encontar onde temos um ciclo completo, em outras palavras, onde os dados se repetem. Eu pensei que rodando um loop e preenchendo as listas "sample1" e "sample2" com um tamanho de 300 no inicio e comparando eles, se o loop encontrar que sample1 == sample2 ele guarda os índices da engine_phase_high que tem um ciclo dentro da lista "full_cycle". Uma vez que o loop rodou a lista toda e não encontrou nenhuma vez a condição sample1==sample2, o tamanho das amostras aumenta de 300 para 301 e roda denovo, se não encontrar pegamos 302 valores para cada lista e comparamos. Dessa forma quando entramos no loop temos: | sample1 | sample2 | | Reset | Start1 | End1 | Start2 | End2 | | 0 | 0 | 300 | 301 | 601 | | 0 | 1 | 301 | 302 | 602 | | 0 | 2 | 302 | 303 | 603 | Quando End2 chegar em 12000 significa que chegamos no final da lista, então o Reset recebe +1, então o nosso número de amostras deixa de ser 300 e passa a ser 301 ficando da seguinte forma: | sample1 | sample2 | | Reset | Start1 | End1 | Start2 | End2 | | 1 | 0 | 301 | 302 | 603 | | 1 | 1 | 302 | 303 | 604 | | 1 | 2 | 303 | 304 | 605 | Quando End2 chegar em 12000 significa que chegamos no final da lista, então o Reset recebe +1, então o nosso número de amostras deixa de ser 301 e passa a ser 302 ficando da seguinte forma: | sample1 | sample2 | | Reset | Start1 | End1 | Start2 | End2 | | 2 | 0 | 302 | 303 | 605 | | 2 | 1 | 303 | 304 | 606 | | 2 | 2 | 304 | 305 | 607 | Basicamente isso que eu preciso fazer. Mas ta bem difícil encontrar o erro.
  4. Estou trabalhando um um algoritmo que lê um arquivo e depois de manipular os dados, joga eles numa lista. Esta lista contém um padrão de repetição em certo ponto dela, porém cada arquivo carregado gera um padrão diferente, então o algoritmo tem que ser capaz de encontrar esse padrão e retornar onde está. Minha ideia foi gerar um loop que gera uma outra lista: lista[x : y] E então compara com uma nova lista gerada tal que: lista2[y+1 : y + (y - x)] Dessa forma se ela não encontrar duas listas iguais(o que indica um padrão) ela aumentaria a amostragem então de x até y, trabalharíamos com: lista[x : y+1] lista2 [y+2 : y + (y-2)] Uma vez que encontrado o padrão o algoritmo retorna o local do padrão mas minha lógica não está funcionando e não consigo encontrar o local da falha. Segue em anexo o pedaço do algoritmo responsável por fazer isso: fullcycle = [] start1 = -1 start2 = 0 end2 = -1 histdiv = 299 end1 = histdiv reset = 0 sample1 = [] sample2 = [] stop = False side = True rise = False while stop!= True: while side == True: start1 = start1 + 1 end1 = end1 + 1 start2 = end1 + 1 end2 = start2 + (end1-start1) sample1.clear() sample2.clear() if end2 <= len(engine_phase_high😞 for i in range (start2, end2😞 sample2.append(engine_phase_high[i]) i = None for i in range (start1, end1😞 sample1.append(engine_phase_high[i]) i = None else: for i in range(start2, len(engine_phase_high)): sample2.append(engine_phase_high[i]) i = None for i in range(start1, len(engine_phase_high)-start2😞 sample1.append(engine_phase_high[i]) i = None if sample1 == sample2: for i in range(start1, end1😞 fullcycle.append(start1) fullcycle.append(end1) print(fullcycle) i = None stop = True if sample1 != sample2 and end1 <= 6000: side = False rise = True else: side = True if rise == True: if end1 <= 6000: reset = reset + 1 start1 = -1 histdiv = end1 end1 = histdiv + reset side = True rise = False if end1 > 6000: stop = True side = False rise = False
×
×
  • Criar Novo...