Não exatamente uma média móvel, mas mais como um filtro passa-baixa: Considere que você tem as últimas 20 amostras adicionadas em uma variável, chamá-lo SUM. Você, em seguida, obter um novo exemplo, e deseja adicioná-lo a SUM, mas primeiro você deve subtrair o mais antigo valor armazenado em SUM. Você não tem os 20 valores anteriores, então você assume que é a média dos últimos 20, ou seja, SUM20. Desta forma, a versão atualizada de SUM com o último exemplo seria: SUM lt - SUM - SUM20 NEWSAMPLE A média pseudo será SUM20. Claro, se você escolher um valor diferente para n, por exemplo n2k, as matemáticas envolvidas seriam mais simples e rápidas: SUM lt - SUM - SUMgtgtk NEWSAMPLE Novamente, esta não é uma média móvel, mas pode muito bem corresponder aos mesmos requisitos . O comportamento desta matemática é simples: atua como um filtro passa-baixo de 1 pólo. A resposta a uma entrada de etapa será uma função exponencial digitalizada ea constante de tempo é um bit sob nSAMPLETIME. Espero que isso ajude, ----- Mensagem original ----- De: pic microcontrolador discussão lista mailto: PICLIST-HvpawkHQRZp23lw5opublic. gmane. org Em nome de Robert Mash Enviado: sexta-feira, 18 de setembro de 2003 17:09 Para : PICLIST-HvpawkHQRZp23lw5opublic. gmane. org Asunto: Filtro de média móvel PIC Existe uma maneira de fazer uma média de n amostra sem armazenar amostras n Eu quero fazer uma média de 20 amostras de movimento. Preciso colocar de lado 20 variáveis de local para esta tarefa Existe uma maneira mais lisa - sugestão piclist: Para deixar o PICList mailto: piclist-unsubscribe-request-XnYjCi86RQ8qNwGfFDJpublic. gmane. org - piclist dica: Para deixar o PICList mailto: piclist - unsubscribe-request-XnYjCi86RQ8qNwGfFDJpublic. gmane. org 2003-09-18 15:57:03 UTC Essa é uma boa idéia. Obrigado ----- Mensagem Original ----- De: Alvaro Deibe Diaz ltadeibe-5zoOUvexkpublic. gmane. orggt Para: ltPICLIST-HvpawkHQRZp23lw5opublic. gmane. orggt Enviado: quinta-feira, 18 de setembro de 2003 11:44 Assunto: Re: PIC filtro de média móvel Post by Alvaro Deibe Diaz Considere que você tem as últimas 20 amostras adicionadas em uma variável, chamá-lo SUM. Você, em seguida, obter um novo exemplo, e deseja adicioná-lo a SUM, mas primeiro você deve subtrair o mais antigo valor armazenado em SUM. Você não tem os 20 valores anteriores, então você assume que é a média dos últimos 20, ou seja, SUM20. Desta forma, a versão atualizada do SUM com o último exemplo seria SUM lt - SUM - SUM20 NEWSAMPLE O pseudo significa será SUM20. Claro, se você escolher um valor diferente para n, por exemplo n2k, o SUM lt - SUM - SUMgtgtk NEWSAMPLE Novamente, esta não é uma média móvel, mas pode muito bem corresponder aos mesmos requisitos. O comportamento desta matemática é simples: atua como um filtro passa-baixo de 1 pólo. A resposta a uma entrada de etapa será uma função exponencial digitalizada ea constante de tempo é um bit sob nSAMPLETIME. Espero que isso ajude, Alvaro Deibe. ----- Mensagem original ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Amostras Eu quero fazer uma média de 20 amostras móveis. Preciso reservar 20 localidades variáveis para esta tarefa Existe uma maneira mais fácil Robert Mash - piclist dica: Para deixar a PICList - piclist dica: Para deixar o PICList - piclist dica: Para deixar o PICList mailto: piclist-unsubscribe - request-XnYjCi86RQ8qNwGfFDJpublic. gmane. org 2003-09-18 16:22:53 UTC Post por Robert Mash Isso é uma boa idéia. Agradecimentos eu fiz algo como este no avr. Eu estava recebendo 7200 leituras de rolamento um segundo, e eu precisava de média deles mais de quatro segundos, com impacto de memória mínimo, como eu também tinha que caber 20 buffers serial no meu carneiro. 28k de memória não era uma opção, eu tinha que fazê-lo nos 512 bytes de ram interna. O que eu fiz foi implementar camadas de dados. 16 leituras foram somadas, depois giradas, para formar uma segunda entrada de camada. Nesse ponto, os dados da camada superior são despejados. Assim que eles estiverem disponíveis, 16 entradas de segunda camada são médias em uma terceira camada, ea segunda camada é despejada, e assim por diante. Quando o sinal desapareceu, então eu iria média quaisquer dados estavam remanescentes, e saída de um único rolamento. A coisa mais divertida foi, eu também tinha que convertê-los de polar para formato retangular para que eu pudesse fazer a média de forma realista. A média de três rolamentos parece fácil, 89,90,91 é obviamente 90, mas tente 359,0,1. O resultado normal de 180 é obviamente errado. Velocidade também foi um problema. Enquanto isso, de volta ao rancho, oito portas seriais em 4800 baud full duplex estão me interrompendo eo nono está funcionando em 115200, também full duplex, e im packetizing e de-packetizing dados entre os buffers. Os 4800 baud uarts foram max3100s falando comigo através spi, então adicione outro casal buffers para spi dentro e para fora, e as interrupções associadas. Os dois últimos buffers seriais foram para um canal de comando interno, que eu tive que analisar para controle de fluxo e configurações de porta. Cada um dos nove canais seriais tinha xonxoff, ou rtscts controle de fluxo também. Era uma máquina muito ocupada. - piclist dica: Para deixar o PICList mailto: piclist-unsubscribe-request-XnYjCi86RQ8qNwGfFDJpublic. gmane. org 2003-09-18 16:05:42 UTC Eu fiz algo parecido com isto em um programa de controle de inventário cerca de 20 anos atrás. Eu pensei FIFO e LIFO custeio era muito complicado, então eu fiz uma média ponderada. Eu armazenei a quantidade na mão eo custo. Quando as peças novas chegaram, eu vim acima com um valor total novo multiplicando a quantidade na mão pelo custo atualmente no registro de inventário e adicionando a quantidade que eu estava adicionando vezes o custo novo. Isto deu um novo valor total para as peças em mãos. Este foi então dividido pela nova quantidade (quantidade do registro de estoque mais a quantidade adicionada) para produzir o novo custo médio ponderado, que foi então colocado de volta no registro de estoque (juntamente com a quantidade atualizada). Cada registro de inventário só precisava para transportar a quantidade na mão eo custo. Tudo isso foi escrito em dBase II e executado em CPM. Eu ainda posso executá-lo sob um emulador de CPM nesta máquina Windoze. FCC Rules Online no hallikainen A melhor coisa para bater a internet em anos - Juno SpeedBand Navegar na web até CINCO VEZES MAIS RÁPIDO Somente 14,95 mês - visite juno para se inscrever hoje - piclist dica: Para deixar o PICList mailto: piclist-unsubscribe - Request-XnYjCi86RQ8qNwGfFDJpublic. gmane. org Alvaro Deibe Diaz Post por Matt Redmond Assim, pode yall recomendar versões decentes do 1. AC para o compilador PIC CCS tem um compilador C agradável para 100-150. Tem um monte de funções de biblioteca e exemplos que podem ser atraentes para você como um novato. Mais importante, eles têm um fórum de usuário muito ativo - para ajudar não é muito longe. Há muitos membros do PIClist que usam o compilador CCS C também. Post por Matt Redmond 2. Um programador adequado para uso com uma ampla gama de flash PICs. Im parcial ao USB mas não é realmente necessário. Acho que ampères Paralelo amp gostava de evitá-lo. O CCS também tem um bom depurador USB (75) que irá programar todos os dispositivos PIC16F e PIC18F posteriores. Configurar o seu hardware para ICSP desde o início e você está tudo definido. Eu também gosto do software depurador muito melhor do que Microchips MPLAB. Se você quer um bom programador de hardware que cobre praticamente todos os PICs, eu recomendo Newfound Electronics Warp13 programador. Eles mantê-lo atualizado melhor do que a Microchip faz com seu próprio programador PicStart Plus. Você pode comprá-lo diretamente a partir deles ou de uma variedade de outras fontes on-line. Post por Matt Redmond 3. Um simulador PIC Microchips MPLAB software (livre) tem um simulador decente. É sobre a única coisa que eu uso MPLAB para mais, e raramente nisso. Post by Matt Redmond Id amor para ser capaz de fazer no circuito de depuração, mas eu acho que não é realmente necessário, a menos que haja algum consenso que é. Ver 2, acima. -) Pessoalmente, eu não poderia passar sem um debugger ou emulador no circuito. Você simplesmente não pode simular hardware do mundo real muito bem e eu acho que é onde a maioria das minhas necessidades de depuração acontecer - onde o PIC encontra o mundo real Post by Matt Redmond Este é apenas hobby stuff amp Eu estou em um orçamento - Eu não posso ser soprando Mil dólares em todas essas coisas. Não há necessidade de explodir um monte de dinheiro para boas ferramentas. Você deve ser capaz de fazer o que você quer muito bem para menos de 200-300. Matt Pobursky Máximo Desempenho Sistemas P. S. Eu não tenho nenhuma afiliação com CCS, apenas um cliente satisfeito. - piclist dica: Para deixar o PICList mailto: piclist-unsubscribe-request-XnYjCi86RQ8qNwGfFDJpublic. gmane. org Oi matt redmond, Im novo para PIC também, Ive básico em circuito 16Fxxx kit programador (fazer o meu próprio), não sei qual projeto Para começar. Você me dá uma boa idéia para começar, podemos compartilhar as informações para este projeto dois cérebros melhor do que um, eu acho. Embora Ive experiência com projeto de eletrônica, mas nenhuma experiência com PIC. ----- Mensagem Original ----- De: pic microcontrolador discussão lista mailto: PICLIST-HvpawkHQRZp23lw5opublic. gmane. orgOn Nome de Matt Redmond Enviado: sexta-feira, 19 de setembro de 2003 3:51 Para: PICLIST-HvpawkHQRZp23lw5opublic. gmane. org Assunto: PIC: Apenas começando, preciso de conselhos. Estou agora pronto para começar a jogar com PICs. Minha experiência com a eletrônica é muito limitada, embora eu entenda o básico. Estou interessado em fazer o seguinte com PICs: Interfacing um teclado numérico (3x4), controlando LEDs e LCDs, comunicando com dispositivos externos via RS232 e comunicando com um PC via IrDA. Assim, pode yall recomendar decente versões do seguinte: 1. A C para PIC compilador 2. Um programador adequado para uso com uma ampla gama de flash PICs. Im parcial ao USB mas não é realmente necessário. Acho que ampères Paralelo amp gostava de evitá-lo. 3. Um simulador PIC Id amor para ser capaz de fazer no circuito de depuração, mas eu acho que não é realmente necessário, a menos que haja algum consenso que é. Este é apenas hobby stuff amp Eu estou em um orçamento - Eu não posso estar soprando mil dólares em todas essas coisas. - piclist dica: Para deixar o PICList mailto: piclist-unsubscribe-request-XnYjCi86RQ8qNwGfFDJpublic. gmane. org - piclist dica: PICList Posts devem começar com um tópico: PIC:, SX:, AVR: - gtuP SOMENTE EE:, OT : - gtOther BUY:, AD: - gtAds Post por Matt Redmond 1. AC para compilador PIC Tente Java - muvium Post por Matt Redmond 2. Um programador adequado para uso com uma ampla gama de flash PICs. Im parcial ao USB mas não é realmente necessário. Acho que ampères Paralelo amp gostava de evitá-lo. Dispositivos uVM têm programador construído em - não há necessidade de um programador Post by Matt Redmond 3. Um simulador PIC Try Virtual Breadboard. Virtualbreadboard - Stick para a versão 1.2 para agora para a aprendizagem. Versão 2 tem suporte para muvium (eventualmente - suspiro) Post by Matt Redmond Id amor para ser capaz de fazer no circuito de depuração, mas eu acho que não é realmente necessário, a menos que haja algum consenso que é. Bem, a sua vinda para muvium, mas ainda não aqui - Depuração remota da Internet sobre a infra-estrutura de depuração de Java. Use seu editor Java favorito para depurar .. Como uma nota. 1.0.7 com suporte para dispositivos 18F está tudo, mas disponível .. (desculpe para aqueles que já morreram segurando a respiração) James Caska muvium uVM - Java Bred para Embedded ----- Original Message ----- From: pic Microcontroller discussão lista mailto: PICLIST-HvpawkHQRZp23lw5opublic. gmane. org Em Nome De CL Low Enviado: sexta-feira, 19 de setembro de 2003 14:59 Para: PICLIST-HvpawkHQRZp23lw5opublic. gmane. org Assunto: Re: PIC: Começando, preciso de conselhos. Olá matt redmond, Im novo para PIC também, Ive básico em circuito 16Fxxx kit programador (fazer o meu próprio), não sei qual projeto para iniciar-on. you dar-me uma boa idéia para começar, podemos compartilhar as informações para este Projeto dois cérebros melhor do que um, eu acho. Embora Ive experiência com projeto de eletrônica, mas nenhuma experiência com PIC. ----- Mensagem Original ----- De: pic microcontrolador discussão lista mailto: PICLIST-HvpawkHQRZp23lw5opublic. gmane. orgOn Nome de Matt Redmond Enviado: sexta-feira, 19 de setembro de 2003 3:51 Para: PICLIST-HvpawkHQRZp23lw5opublic. gmane. org Assunto: PIC: Apenas começando, preciso de conselhos. Estou agora pronto para começar a jogar com PICs. Minha experiência com a eletrônica é muito limitada, embora eu entenda o básico. Estou interessado em fazer o seguinte com PICs: Interfacing um teclado numérico (3x4), controlando LEDs e LCDs, comunicando com dispositivos externos via RS232 e comunicando com um PC via IrDA. Assim, pode yall recomendar decente versões do seguinte: 1. A C para PIC compilador 2. Um programador adequado para uso com uma ampla gama de flash PICs. Im parcial ao USB mas não é realmente necessário. Acho que ampères Paralelo amp gostava de evitá-lo. 3. Um simulador PIC Id amor para ser capaz de fazer no circuito de depuração, mas eu acho que não é realmente necessário, a menos que haja algum consenso que é. Este é apenas hobby stuff amp Eu estou em um orçamento - Eu não posso estar soprando mil dólares em todas essas coisas. - piclist dica: Para deixar o PICList mailto: piclist-unsubscribe-request-XnYjCi86RQ8qNwGfFDJpublic. gmane. org - piclist dica: PICList Posts devem começar com um tópico: PIC:, SX:, AVR: - gtuP SOMENTE EE:, OT : - gtOther BUY:, AD: - gtAds - piclist dica: PICList Posts devem começar com um tópico: PIC:, SX:, AVR: - gtuP ONLY EE:, OT: - gtOther BUY: AD: - gtAds Enviado: PIC: filtro de média móvel Existe uma maneira de fazer uma média de n amostra sem armazenar amostras n Eu quero fazer uma média de 20 amostras de movimento. Eu preciso reservar 20 variáveis de local para esta tarefa Existe uma maneira mais lisa Robert Mash Isso depende de quão próximo você quer aproximar a média média padrão. Se você quiser uma integração de vagão convencional, você deve reter todos os 20 valores anteriores para que você possa subtraí-los um de cada vez, na ordem como novos termos são adicionados. (O boxcar de nome vem da forma retangular da função de janela que resulta da adição de cada termo com um fator de ponderação igual.) Se você estiver disposto a implementar um filtro exponencial (exatamente análogo a um filtro de hardware RC), você pode fazer muito melhor . A partir da teoria da transformação Z, um filtro recursivo de um estágio pode ser modelado como y (n) x (n) alfa y (n-1) y (n) é a saída de corrente, x (n) é a entrada de corrente, y (n -1) é a saída anterior, e alfa é uma constante que define o intervalo de tempo sobre o qual o filtro se lembra da entrada. Se eu percebi isso, alfa exp (- T tau) onde T é o intervalo de tempo entre amostras e tau é a constante de tempo efetiva desejada. Será necessário reajustar para encontrar uma relação entre tau e 20 (ou qualquer número é necessário). Este tipo de filtro descontos anteriores amostras com o passar do tempo, em oposição à média (boxcar) filtro que trata todos os valores igualmente até a queda. Existem várias limitações para este filtro. 1. Requer ponto flutuante. 2. Alfa deve ser pré-computado, ou a função exponencial deve estar disponível em tempo de execução. - piclist dica: PICList Posts deve começar com um tópico: PIC:, SX:, AVR: - gtuP apenas EE:, OT: - gtOther Comprar:, AD: - gtAds 2003-09-20 16:52:55 UTC Post Se você está disposto a implementar um filtro exponencial (exatamente análogo a um filtro de hardware RC), você pode fazer muito melhor. A partir da teoria da transformação Z, um filtro recursivo de um estágio pode ser modelado como y (n) x (n) alfa y (n-1) Isso definitivamente não modela um filtro RC. Por um lado, note que esta é uma série infinitamente crescente, mesmo com uma entrada constante e um ALFA maior do que 0. Não executa nenhuma função de filtragem útil que eu possa pensar. Como foi discutido muitas vezes aqui antes, a maneira correta de modelar um filtro RC é: FILT lt - FILT ALPHA (NEW - FILT) Veja os arquivos para muitas discussões detalhadas. Embed Inc, embedded system especialistas em Littleton Massachusetts (978) 742-9014, embedinc - piclist dica: O servidor de lista pode filtrar subtópicos (como anúncios ou off tópicos) para você. Veja piclisttopics 2003-10-16 18:55:37 UTC viu o seu post. Preciso projetar a leitura do sensor ADXL202 g. Como você certamente sabe que tem grande ruído e um filtro, ou um avery em execução é fundamental. Eu não encontrei o explaination sobre sua equação. PICLIST está em baixo. Você poderia ajudar a encontrar detalhes para decidir o fator Paulo Não há nenhuma razão para isso ser uma mensagem particular para mim. A PICLIST nunca é longa. Eu só peguei mensagens e a atividade parece bastante contínua desde a última vez que eu peguei. O intervalo mais longo entre as mensagens foi de apenas 40 minutos. Quanto ao filtro, que detalhe, que fator Incrível Inc, especialistas em sistemas embarcados em Littleton Massachusetts (978) 742-9014, embedinc - piclist dica: O PICList é arquivado de três maneiras diferentes. Veja piclistarchives para detalhes. Jan-Erik Soderholm XA (TNPAC) 2003-09-20 09:38:21 UTC Post por John Ferrell O 16F84 está fora de produção O 16F84 é. O 16F84A não é. Realmente não importa, não há nenhuma razão para que nunca para desenvolver qualquer coisa com qualquer um deles. - sugestão de piclist: O servidor de lista pode filtrar subtópicos (como anúncios ou off tópicos) para você. Ver piclisttopics 2003-09-20 19:58:28 UTC Post por John Ferrell O 16F84 está fora de produção Post by John Ferrell O 16F84 é. O 16F84A não é. Post by John Ferrell Realmente não importa, não há razão para que nunca para desenvolver qualquer coisa com qualquer um deles. Jan-Erik Lotes dos projetos acima na correia fotorreceptora, preços muito bons em lojas do excesso, lotes deles para livre dos povos que usam somente séries 628, 877 e 18F, etc -------------- ------------------- Você Yahoo Yahoo SiteBuilder - Livre, fácil de usar web site design software - piclist dica: O servidor de lista pode filtrar subtopics (como Anúncios ou off tópicos) para você. Ver piclisttopics 2003-09-22 18:29:59 UTC Que nunca. Olhe para: finitesited3jsys16F628.html John Ferrell 6241 Phillippi Rd Juliano NC 27283 Telefone: (336)685-9606 johnferrell-public. gmane. org Dixie Competição Produtos NSRCA 479 AMA 4190 W8CCW Minha Competição não é Meu Inimigo - piclistnomail Going offline Não AutoReply Us email listserv-XnYjCi86RQ8qNwGfFDJpublic. gmane. org com SET PICList DIGEST no corpo On Thu, 25 Sep 2003 11:27:09 0800, CL Low escreveu: :: alguns como eu acidentalmente baixado esta versão na web, LET PIC :: BASIC LITE :: Versão 7.1, você me deixa saber onde posso obter um :: programador (hardware) :: curcuit supportcomparable com ele Im um novo hobbyist. :: regards :: cl low Qualquer programador pic será capaz de usar o arquivo hex produzido por este compilador. Crownhill (as pessoas que fazem o compilador básico LET) também estoque uma gama de programadores e placas de desenvolvimento. E antes de Wouter disparar um e-mail - ele tem o Wisp628 que também irá trabalhar com o arquivo hexadecimal. Eu acredito que um dos programadores Crownhills é semelhante ao EPIC e se o seu IDE tem uma opção de programação, então este pode ser o programador que está esperando. Veja seu site para mais detalhes. PS. Nunca faço nada acidentalmente, muito mais divertido fazê-lo de propósito :-) - cdb, bodgy1-sFbbPxZDHXw0npublic. gmane. org em 26.09.2003 Eu sempre fui um Dendrites curto de um Axon e acredite em mim mostra. A luz viaja mais rápido do que o som. É por isso que algumas pessoas aparecem brilhantes até que eles falam - piclist dica: O servidor de lista pode filtrar subtópicos (como anúncios ou off tópicos) para você. Ver piclisttopics Jan-Erik Soderholm XA (TNPAC) 2003-09-20 20:05:04 UTC Sumário: Uma versão mais recente deste dispositivo está disponível. Por favor, considere PIC16F84A Mas todos nós sabemos isso, certo Há pessoas a movimentação de carros antigos também, apenas para o divertimento dele. Eu não me importo. - sugestão de piclist: O servidor de lista pode filtrar subtópicos (como anúncios ou off tópicos) para você. Ver piclisttopics 2003-09-20 20:15:58 UTC Post por Jan-Erik Soderholm XA (TNPAC) Uma versão mais recente deste dispositivo está disponível. Por favor, considere PIC16F84A Mas todos nós sabemos isso, certo sobre: ESTADO: EM PRODUÇÃO Post por Jan-Erik Soderholm XA (TNPAC) Há pessoas os carros de condução de idade também, apenas para a diversão de it. Eu não me importo. Nem eu, mas eu não digo que eles não existem porque eu dirijo um novo --------------------------------- Você Yahoo Yahoo SiteBuilder - Livre, fácil de usar o software de design do site - piclist dica: O servidor de lista pode filtrar subtópicos (como anúncios ou off tópicos) para você. Ver piclisttopics 2003-09-21 21:10:54 UTC Post by Robert Mash Existe uma maneira de fazer uma amostra n média móvel sem armazenar amostras n Eu quero fazer uma média de 20 exemplo de movimentação. Eu preciso de reservar 20 variáveis de local para esta tarefa Existe uma maneira mais lisa Robert Mash Se você está disposto a implementar um filtro exponencial (exatamente análogo a um filtro de hardware RC), você pode fazer muito melhor. A partir da teoria da transformação Z, um filtro recursivo de um estágio pode ser modelado como y (n) x (n) alfa y (n-1) Acho que cometi um erro na normalização desta fórmula. Deve ser y (n) (1 - alfa) x (n) alfa y (n-1) - sugestão de piclist: O PICList é arquivado de três maneiras diferentes. Veja piclistarchives para detalhes. 2003-09-21 22:08:48 UTC Post by John N. Power Eu acho que cometi um erro na normalização desta fórmula. Deve ser y (n) (1 - alfa) x (n) alfa y (n-1) Sim, isso corretamente modela um filtro RC simples, embora geralmente não seja a maneira que você deseja implementar esse filtro em um PIC. Embed Inc, especialistas em sistemas embarcados em Littleton, Massachusetts (978) 742-9014, embedinc - piclist dica: O PICList é arquivado de três maneiras diferentes. Veja piclistarchives para detalhes. Robert Mash 2003-09-18 15:09:05 UTC Autor: Alvaro Deibe Diaz Data de Nascimento: 2003-09-18 15:44:51 UTC Autor: Robert Mash Classificação: 2003-09-18 15:57:03 UTC Autor: David VanHorn Classificação: 2003-09-18 16:22 : 53 UTC Autor: Harold Hallikainen Data de Nascimento: 2003-09-18 16:05:42 UTC Autor: Alvaro Deibe Diaz Classificação: 2003-09-18 17:11:58 UTC Autor: Robert Mash Classificação: 2003-09-18 16:21:29 UTC Autor: Olin Lathrop Data de inscrição: 2003-09-18 17:03:49 UTC Autor: Duane Data de Nascimento: 2003-09-18 17:49:24 UTC Autor: Olin Lathrop Data de Confiança: 2003-09-18 18:03:21 UTC Autor: Picdude Data de Nascimento: 2003-09-18 18:05:57 UTC Picdude 2003-09-18 20 : 09: 09 UTC Autor: Dan Devine Data de Nascimento: 2003-09-18 18:29:50 UTC Autor: Duane Data de Nascimento: 2003-09-18 20:11:34 UTC Informação de Resposta Olin Lathrop 2003-09-18 22:05:00 UTC Wouter van Ooijen 2003-09- 18 19:00:39 UTC Matt Redmond 2003-09-18 19:51:27 UTC Wouter van Ooijen 2003-09-18 20:20:14 UTC Matt Pobursky 2003-09-18 21:04:38 UTC Olin Lathrop 2003 -09-18 22:13:39 UTC Autor: Matt Pobursky Data de Nascimento: 2003-09-19 01:30:28 UTC Autor: Charles Rogers Data de Nascimento: 2003-09-18 21:50:51 UTC Baixo: 2003-09-19 04:58:37 UTC Caska 2003-09-19 05:55:07 UTC Autor: John Ferrell Data de Nascimento: 2003-09-19 20:04:04 UTC Autor: Bob Blick Data de Nascimento: 2003-09-19 18:50:46 UTC Baixo: 2003-09-20 04:46:24 UTC Vincent Vega 20 03-09-19 21:05:59 UTC Autor: Harold Hallikainen Data de Nascimento: 2003-09-18 17:40:46 UTC Autor: yalhi Data de Nascimento: 2003-09-19 05:48:53 UTC Autor: John N. Power Classificação: 2003-09-19 20:08: 15 UTC Olin Lathrop 2003-09-20 16:52:55 UTC Olin Lathrop 2003-10-16 18:55:37 UTC Janeiro-Erik Soderholm XA (TNPAC) 2003-09-20 09:38:21 UTC Vincent Vega 2003 -09-20 19:58:28 UTC John Ferrell 2003-09-22 18:29:59 UTC Baixa 2003-09-25 03:27:09 UTC Baixa 2003-09-25 04:17:37 UTC cdb 2003-09-26 02:01:51 UTC Jan-Erik Soderholm XA (TNPAC) 2003-09-20 20:05:04 UTC Vincent Vega 2003-09-20 20:15:58 UTC John N. Power 2003-09 -21 21:10:54 UTC Olin Lathrop 2003-09-21 22:08:48 UTCAs outros já mencionaram, você deve considerar um filtro IIR (resposta de impulso infinito) em vez do filtro FIR (resposta de impulso finito) que você está usando agora . Há mais, mas à primeira vista os filtros FIR são implementados como convoluções explícitas e filtros IIR com equações. O filtro IIR especial que eu uso muito em microcontroladores é um filtro de passa-baixa de um único pólo. Este é o equivalente digital de um simples filtro analógico R-C. Para a maioria das aplicações, elas terão melhores características do que o filtro de caixa que você está usando. A maioria dos usos de um filtro de caixa que eu encontrei são o resultado de alguém não prestar atenção na classe de processamento de sinal digital, não como resultado de precisar de suas características particulares. Se você só quer atenuar as altas freqüências que você sabe que são ruídos, um único pólo filtro passa-baixo é melhor. A melhor maneira de implementar um digitalmente em um microcontrolador é geralmente: FILT lt - FILT FF (NEW - FILT) FILT é um pedaço de estado persistente. Esta é a única variável persistente que você precisa para calcular este filtro. NEW é o novo valor que o filtro está sendo atualizado com esta iteração. FF é a fracção do filtro. Que ajusta o peso do filtro. Olhe para este algoritmo e veja que para FF 0 o filtro é infinitamente pesado desde a saída nunca muda. Para FF 1, seu realmente nenhum filtro em tudo desde que a saída segue apenas a entrada. Valores úteis estão no meio. Em sistemas pequenos você escolhe FF para ser 12 N de modo que a multiplicação por FF pode ser realizada como uma mudança para a direita por N bits. Por exemplo, FF pode ser 116 e a multiplicação por FF, portanto, um deslocamento para a direita de 4 bits. Caso contrário, este filtro precisa apenas de uma subtração e uma adição, embora os números geralmente precisam ser mais largos do que o valor de entrada (mais na precisão numérica em uma seção separada abaixo). Eu costumo tomar leituras AD significativamente mais rápido do que eles são necessários e aplicar dois desses filtros em cascata. Este é o equivalente digital de dois filtros R-C em série, e atenua por 12 dBoctave acima da freqüência rolloff. No entanto, para as leituras AD seu geralmente mais relevante para olhar para o filtro no domínio do tempo, considerando a sua resposta passo. Isso indica a rapidez com que seu sistema verá uma alteração quando a coisa que você está medindo muda. Para facilitar a concepção destes filtros (que significa apenas escolher FF e decidir quantos deles para cascatear), eu uso o meu programa FILTBITS. Você especifica o número de bits de deslocamento para cada FF na série de filtros em cascata e calcula a resposta da etapa e outros valores. Na verdade, eu costumo executar este através do meu script wrapper PLOTFILT. Isso executa FILTBITS, que faz um arquivo CSV, em seguida, traça o arquivo CSV. Por exemplo, aqui está o resultado de PLOTFILT 4 4: Os dois parâmetros para PLOTFILT significam que haverá dois filtros em cascata do tipo descrito acima. Os valores de 4 indicam o número de bits de mudança para realizar a multiplicação por FF. Os dois valores FF são, portanto, 116 neste caso. O traço vermelho é a resposta da etapa da unidade, e é a coisa principal a olhar. Por exemplo, isto diz-lhe que se a entrada muda instantaneamente, a saída do filtro combinado estabelecerá a 90 do novo valor em 60 iterações. Se você se preocupa com 95 tempo de resolução, então você tem que esperar cerca de 73 iterações, e por 50 tempo de resolução apenas 26 iterações. O traço verde mostra a saída de um único pico de amplitude total. Isto dá-lhe alguma idéia da supressão aleatória do ruído. Parece que nenhuma amostra individual causará mais de uma alteração de 2,5 na saída. O traço azul é dar uma sensação subjetiva do que este filtro faz com o ruído branco. Este não é um teste rigoroso, uma vez que não há garantia o que exatamente o conteúdo foi dos números aleatórios escolhidos como a entrada de ruído branco para esta execução de PLOTFILT. Seu somente para dar-lhe uma sensação áspera de quanto será squashed e de como liso é. PLOTFILT, talvez FILTBITS, e muitas outras coisas úteis, especialmente para o desenvolvimento de firmware PIC está disponível na versão de software do PIC Development Tools na minha página de downloads de Software. Adicionado sobre a precisão numérica eu vejo dos comentários e agora uma nova resposta que há interesse em discutir o número de bits necessários para implementar este filtro. Observe que a multiplicação por FF criará Log 2 (FF) novos bits abaixo do ponto binário. Em sistemas pequenos, FF é geralmente escolhido para ser 12 N de modo que este multiplicar é realmente realizado por um deslocamento à direita de N bits. FILT é geralmente um inteiro de ponto fixo. Observe que isso não altera nenhuma das matemáticas do ponto de vista de processadores. Por exemplo, se você estiver filtrando leituras de AD de 10 bits e N 4 (FF 116), então você precisará de 4 bits de fração abaixo das leituras de AD de 10 bits. Um processadores mais, youd estar fazendo operações inteiras de 16 bits devido às leituras de AD de 10 bits. Neste caso, você ainda pode fazer exatamente as mesmas operações de integer de 16 bits, mas comece com as leituras AD desviadas por 4 bits. O processador não sabe a diferença e não precisa. Fazer a matemática em inteiros inteiros de 16 bits funciona se você considera que eles são 12,4 ponto fixo ou verdadeiros inteiros de 16 bits (16,0 ponto fixo). Em geral, você precisa adicionar N bits cada pólo de filtro se você não quiser adicionar ruído devido à representação numérica. No exemplo acima, o segundo filtro de dois teria 1044 18 bits para não perder informações. Na prática em uma máquina de 8 bits que significa youd usar valores de 24 bits. Tecnicamente apenas o segundo pólo de dois precisaria do valor mais amplo, mas para a simplicidade do firmware eu costumo usar a mesma representação e, portanto, o mesmo código, para todos os pólos de um filtro. Normalmente eu escrevo uma sub-rotina ou macro para executar uma operação de pólo de filtro, em seguida, aplicar isso a cada pólo. Se uma sub-rotina ou macro depende se os ciclos ou a memória do programa são mais importantes nesse projeto específico. De qualquer maneira, eu uso algum estado zero para passar NOVO para o subrotina, que atualiza FILT, mas também carrega isso para o mesmo estado de arranhão NOVO foi dentro Isso torna mais fácil para aplicar vários pólos desde o FILT atualizado de um pólo é o NOVO Da próxima. Quando uma sub-rotina, é útil ter um ponteiro apontar para FILT no caminho, que é atualizado para logo após FILT na saída. Desta forma, a sub-rotina opera automaticamente em filtros consecutivos na memória se for chamada várias vezes. Com uma macro você não precisa de um ponteiro desde que você passa no endereço para operar em cada iteração. Exemplos de código Aqui está um exemplo de uma macro como descrito acima para um PIC 18: E aqui está uma macro semelhante para um PIC 24 ou dsPIC 30 ou 33: Ambos estes exemplos são implementados como macros usando o meu pré-processador de assembler PIC. Que é mais capaz do que qualquer um das instalações macro incorporadas. Clabacchio: Outra questão que eu deveria ter mencionado é a implementação de firmware. Você pode escrever uma sub-rotina de filtro passa-baixo de um único pólo uma vez, depois aplicá-lo várias vezes. Na verdade eu costumo escrever uma sub-rotina para levar um ponteiro na memória para o estado do filtro, em seguida, fazê-lo avançar o ponteiro para que ele pode ser chamado em sucessão facilmente para realizar filtros multi-polo. Ndash Olin Lathrop Apr 20 12 at 15:03 1. muito obrigado por suas respostas - todos eles. Eu decidi usar este filtro IIR, mas este filtro não é usado como um filtro LowPass padrão, uma vez que eu preciso para a média de valores de contador e compará-los para detectar alterações em um determinado intervalo. Uma vez que estes Valores van ser de dimensões muito diferentes, dependendo de hardware que eu queria tomar uma média, a fim de ser capaz de reagir a estas mudanças Hardware específicas automaticamente. Ndash sensslen May 21 12 at 12:06 Se você pode viver com a restrição de um poder de dois números de itens para a média (ou seja, 2,4,8,16,32 etc), então a divisão pode ser feita de forma fácil e eficiente em um Micro de baixo desempenho sem divisão dedicada, pois pode ser feito como um deslocamento bit. Cada turno é um poder de duas, por exemplo: O OP pensou que tinha dois problemas, dividindo em um PIC16 e memória para seu buffer de anel. Esta resposta mostra que a divisão não é difícil. É verdade que ele não trata do problema de memória, mas o sistema SE permite respostas parciais, e os usuários podem tirar algo de cada resposta por si mesmos, ou mesmo editar e combinar outras respostas. Uma vez que algumas das outras respostas requerem uma operação de divisão, elas são igualmente incompletas, uma vez que não mostram como efetivamente conseguir isso em um PIC16. Há uma resposta para um verdadeiro filtro de média móvel (aka boxcar filtro) com menos requisitos de memória, se você não mente downsampling. É chamado de filtro integrador-pente em cascata (CIC). A idéia é que você tem um integrador que você toma as diferenças de um período de tempo, eo dispositivo de economia de memória chave é que por downsampling, você não tem que armazenar cada valor do integrador. Ele pode ser implementado usando o seguinte pseudocódigo: Seu comprimento médio móvel efetivo é decimationFactorstatesize, mas você só precisa manter em torno de amostras statesize. Obviamente, você pode obter um melhor desempenho se o seu statesize e decimationFactor são poderes de 2, de modo que a divisão e os operadores restantes são substituídos por turnos e máscara-ands. Postscript: Eu concordo com Olin que você deve sempre considerar filtros IIR simples antes de um filtro de média móvel. Se você não precisa de freqüência-nulos de um filtro de vagão, um filtro de passa-baixa de 1 pólo ou de 2 pólos provavelmente funcionará bem. Por outro lado, se você estiver filtrando para fins de decimação (tomando uma entrada de alta taxa de amostragem e calculando a média para uso em um processo de baixa taxa), então um filtro CIC pode ser exatamente o que você está procurando. (Especialmente se você pode usar statesize1 e evitar o ringbuffer completamente com apenas um valor único integrador anterior) Theres alguma análise em profundidade da matemática por trás usando o filtro IIR de primeira ordem que Olin Lathrop já descreveu mais sobre a troca de pilha de processamento de sinal digital (Inclui muitas imagens bonitas.) A equação para este filtro IIR é: Isso pode ser implementado usando apenas inteiros e nenhuma divisão usando o código a seguir (pode precisar de alguma depuração como eu estava digitando da memória.) Este filtro aproxima uma média móvel de Os últimos K amostras, definindo o valor de alfa para 1K. Faça isso no código anterior, definindo BITS para LOG2 (K), ou seja, para K 16 set BITS para 4, para K 4 set BITS para 2, etc (eu verificar o código listado aqui logo que eu recebo uma alteração e Editar esta resposta, se necessário.) Responder Jun 23 12 at 4:04 Heres um filtro passa-baixo de um único pólo (média móvel, com freqüência de corte CutoffFrequency). Muito simples, muito rápido, funciona muito bem, e quase nenhuma sobrecarga de memória. Nota: Todas as variáveis têm escopo além da função de filtro, exceto o passado em newInput Nota: Este é um filtro de etapa única. Várias etapas podem ser conectadas em cascata para aumentar a nitidez do filtro. Se você usar mais de um estágio, você terá que ajustar DecayFactor (como se relaciona com o Cutoff-Frequency) para compensar. E, obviamente, tudo o que você precisa é dessas duas linhas colocadas em qualquer lugar, eles não precisam de sua própria função. Este filtro tem um tempo de rampa antes que a média móvel represente a do sinal de entrada. Se você precisar ignorar esse tempo de aceleração, basta inicializar MovingAverage para o primeiro valor de newInput em vez de 0 e esperar que o primeiro newInput não seja um outlier. (CutoffFrequencySampleRate) tem um intervalo entre 0 e 0,5. DecayFactor é um valor entre 0 e 1, geralmente perto de 1. Flutuadores de precisão única são bons o suficiente para a maioria das coisas, eu só prefiro dobra. Se você precisa ficar com números inteiros, você pode converter DecayFactor e Amplitude Factor em inteiros fracionários, em que o numerador é armazenado como o inteiro, eo denominador é um número inteiro de 2 (assim você pode bit-shift para a direita como o Denominador em vez de ter que dividir durante o loop de filtro). Por exemplo, se você usar DecayFactor 0,99, e você quiser usar números inteiros, você pode definir DecayFactor 0,99 65536 64881. E então, sempre que você multiplicar por DecayFactor em seu loop de filtro, basta deslocar o resultado 16. Para obter mais informações sobre isso, um excelente livro thats Online, capítulo 19 sobre filtros recursivos: dspguidech19.htm PS Para o paradigma da média móvel, uma abordagem diferente para definir DecayFactor e AmplitudeFactor que pode ser mais relevante para suas necessidades, vamos dizer que você quer o anterior, cerca de 6 itens média juntos, fazê-lo discretamente, youd adicionar 6 itens e dividir por 6, então Você pode definir o AmplitudeFactor para 16 e DecayFactor para (1,0 - AmplitudeFactor). Respondida May 14 12 at 22:55 Todo mundo tem comentado completamente sobre a utilidade de IIR vs FIR, e na divisão de poder-de-dois. Id gostaria de dar alguns detalhes de implementação. O abaixo funciona bem em pequenos microcontroladores sem FPU. Não há multiplicação, e se você mantiver N um poder de dois, toda a divisão é um ciclo de bit-shifting. Tampão de toque FIR básico: mantém um buffer de execução dos últimos N valores e uma Soma em execução de todos os valores no buffer. Cada vez que uma nova amostra entra, subtraia o valor mais antigo no buffer de SUM, substitua-o pela nova amostra, adicione a nova amostra à SUM e a saída SUMN. Tampão de anel IIR modificado: mantenha uma SUM corrente dos últimos N valores. Cada vez que uma nova amostra entra, SUM - SUMN, adicione a nova amostra e a saída SUMN. Se I39m lendo você direito, você está descrevendo um filtro IIR de primeira ordem o valor que você está subtraindo isn39t o valor mais antigo que está caindo, mas é, em vez disso, a média dos valores anteriores. Os filtros IIR de primeira ordem podem certamente ser úteis, mas não tenho certeza do que você quer dizer quando sugere que a saída é a mesma para todos os sinais periódicos. A uma taxa de amostragem de 10KHz, a alimentação de uma onda quadrada de 100Hz em um filtro de caixa de 20 estágios produzirá um sinal que sobe uniformemente para 20 amostras, senta alto para 30, cai uniformemente para 20 amostras e senta baixo para 30. Uma primeira ordem IIR. Ndash supercat Aug 28 13 às 15:31 vai render uma onda que começa bruscamente a subir e gradualmente nivela perto (mas não no) máximo de entrada, então começa bruscamente a cair e nivela gradualmente perto (mas não) do mínimo de entrada. Comportamento muito diferente. Uma questão é que uma média móvel simples pode ou não ser útil. Com um filtro IIR, você pode obter um bom filtro com relativamente poucos calcs. O FIR que você descreve só pode lhe dar um retângulo no tempo - um sinc em freq - e você não pode gerenciar os lobos laterais. Pode valer a pena jogar algumas multiplicações inteiras para torná-la uma simpática e simétrica sintonia FIR se você pode poupar os carrapatos do relógio. Scott Scott Seidman: Não há necessidade de multiplicações se um tiver simplesmente cada estágio do FIR ou a saída da média da entrada para esse estágio e seu valor armazenado anterior e, em seguida, armazenar a entrada (se houver O intervalo numérico, pode-se usar a soma em vez da média). Se isso é melhor do que um filtro de caixa depende da aplicação (a resposta de passo de um filtro de caixa com um atraso total de 1ms, por exemplo, terá um pico d2dt desagradável quando a mudança de entrada, e novamente 1ms mais tarde, mas terá o mínimo Possível ddt para um filtro com um atraso total de 1ms). Como disse mikeselectricstuff, se você realmente precisa reduzir suas necessidades de memória, e você não se importa sua resposta ao impulso é uma exponencial (em vez de um pulso retangular), eu iria para um filtro de média móvel exponencial . Eu uso-os extensivamente. Com esse tipo de filtro, você não precisa de qualquer buffer. Você não tem que armazenar N amostras passadas. Apenas um. Assim, seus requisitos de memória são cortados por um fator de N. Além disso, você não precisa de qualquer divisão para isso. Somente multiplicações. Se você tiver acesso a aritmética de ponto flutuante, use multiplicações de ponto flutuante. Caso contrário, faça multiplicações inteiras e desloque para a direita. No entanto, estamos em 2017, e eu recomendo que você use compiladores (e MCUs) que permitem que você trabalhe com números de ponto flutuante. Além de ser mais memória eficiente e mais rápido (você não tem que atualizar itens em qualquer buffer circular), eu diria que é também mais natural. Porque uma resposta de impulso exponencial corresponde melhor à maneira como a natureza se comporta, na maioria dos casos. Um problema com o filtro IIR como quase tocado por olin e supercat mas aparentemente desconsiderado por outros é que o arredondamento para baixo introduz alguma imprecisão (e potencialmente biastruncation). Assumindo que N é uma potência de dois, e apenas aritmética inteira é utilizada, o direito de deslocamento sistematicamente elimina os LSBs da nova amostra. Isso significa que quanto tempo a série poderia ser, a média nunca vai levá-los em conta. Por exemplo, suponha uma série lentamente decrescente (8,8,8,8,7,7,7,7,6,6) e suponha que a média é realmente 8 no início. A amostra do punho 7 trará a média para 7, independentemente da intensidade do filtro. Apenas para uma amostra. Mesma história para 6, etc. Agora pense no oposto. A série sobe. A média ficará em 7 para sempre, até que a amostra seja grande o suficiente para fazê-la mudar. Claro, você pode corrigir o viés, adicionando 12N2, mas isso não vai realmente resolver o problema de precisão. Nesse caso a série decrescente permanecerá para sempre em 8 até que a amostra seja 8-12 (N2). Para N4, por exemplo, qualquer amostra acima de zero manterá a média inalterada. Acredito que uma solução para isso implicaria manter um acumulador dos LSBs perdidos. Mas eu não fui longe o suficiente para ter código pronto, e não tenho certeza que não iria prejudicar o poder IIR em alguns outros casos de série (por exemplo, se 7,9,7,9 seria média para 8 então). Olin, sua cascata de dois estágios também precisaria de alguma explicação. Você quer dizer segurando dois valores médios com o resultado do primeiro alimentado para o segundo em cada iteração. Qual é o benefício deste filtro de média móvel Você pode usar o módulo de filtro de média móvel para calcular uma série de médias unilaterais ou bidirecionais em um conjunto de dados, usando um comprimento de janela que você especificar. Depois de definir um filtro que atenda às suas necessidades, você pode aplicá-lo a colunas selecionadas em um conjunto de dados, conectando-o ao módulo Aplicar filtro. O módulo faz todos os cálculos e substitui valores dentro de colunas numéricas com médias móveis correspondentes. Você pode usar a média móvel resultante para traçar e visualizar, como uma nova linha de base suave para modelagem, para calcular variâncias contra cálculos para períodos semelhantes, e assim por diante. Esse tipo de média ajuda a revelar e prever padrões temporais úteis em dados retrospectivos e em tempo real. O tipo mais simples de média móvel começa em alguma amostra da série e usa a média dessa posição mais as n posições anteriores em vez do valor real. (Você pode definir n como quiser.) Quanto maior for o período n no qual a média é calculada, menor será a variação entre os valores. Além disso, à medida que aumenta o número de valores utilizados, menos efeito tem um valor único na média resultante. Uma média móvel pode ser unilateral ou bilateral. Em uma média unilateral, apenas os valores que precedem o valor do índice são usados. Em uma média de dois lados, valores passados e futuros são usados. Para cenários em que você está lendo dados em fluxo contínuo, as médias móveis cumulativas e ponderadas são particularmente úteis. Uma média móvel cumulativa leva em consideração os pontos anteriores ao período corrente. Você pode pesar todos os pontos de dados igualmente ao calcular a média, ou pode garantir que os valores mais próximos do ponto de dados atual são ponderados mais fortemente. Em uma média móvel ponderada. Todos os pesos devem somar a 1. Em uma média móvel exponencial. As médias consistem em uma cabeça e uma cauda. Que pode ser ponderada. Uma cauda ligeiramente ponderada significa que a cauda segue a cabeça muito de perto, então a média se comporta como uma média móvel em um curto período de ponderação. Quando os pesos da cauda são mais pesados, a média se comporta mais como uma média móvel simples mais longa. Adicione o módulo Filtro de média móvel à sua experiência. Para Comprimento. Digite um valor de número inteiro positivo que define o tamanho total da janela através da qual o filtro é aplicado. Isso também é chamado de máscara de filtro. Para uma média móvel, o comprimento do filtro determina quantos valores são calculados na janela deslizante. Filtros mais longos também são chamados filtros de ordem superior, e fornecem uma janela de cálculo maior e uma aproximação mais próxima da linha de tendência. Filtros de ordem menor ou menor usam uma janela de cálculo menor e se assemelham mais aos dados originais. Para Tipo. Escolha o tipo de média móvel a ser aplicada. O Azure Machine Learning Studio suporta os seguintes tipos de cálculos de média móvel: Uma média móvel simples (SMA) é calculada como uma média de rolamento não ponderada. As médias móveis triangulares (TMA) são médias duas vezes para uma linha de tendência mais suave. A palavra triangular é derivada da forma dos pesos que são aplicados aos dados, que enfatiza os valores centrais. Uma média móvel exponencial (EMA) dá mais peso aos dados mais recentes. A ponderação cai exponencialmente. Uma média móvel exponencial modificada calcula uma média móvel em execução, onde calcular a média móvel em qualquer ponto considera a média móvel previamente calculada em todos os pontos precedentes. Este método produz uma linha de tendência mais suave. Dado um único ponto e uma média móvel atual, a média móvel cumulativa (CMA) calcula a média móvel no ponto atual. Adicione o conjunto de dados que tem os valores que você deseja calcular uma média móvel e adicione o módulo Aplicar filtro. Conecte o Filtro de Média Móvel à entrada do lado esquerdo de Aplicar Filtro. E conecte o conjunto de dados à entrada do lado direito. No módulo Aplicar filtro, use o seletor de coluna para especificar quais colunas o filtro deve ser aplicado. Por padrão, o filtro que você criar será aplicado a todas as colunas numéricas, portanto, certifique-se de excluir todas as colunas que não possuem dados apropriados. Execute a experiência. Nesse ponto, para cada conjunto de valores definido pelo parâmetro de comprimento do filtro, o valor atual (ou índice) é substituído pelo valor da média móvel. A Média Móvel como Filtro A média móvel é freqüentemente usada para suavizar dados na presença de barulho. A média móvel simples nem sempre é reconhecida como o filtro de Resposta de Impulso Finito (FIR) que é, enquanto é realmente um dos filtros mais comuns no processamento de sinal. Tratá-lo como um filtro permite compará-lo com, por exemplo, windowed-sinc filtros (ver os artigos sobre low-pass, high-pass, band-pass e band-reject filtros para exemplos desses). A principal diferença com esses filtros é que a média móvel é adequada para sinais para os quais a informação útil está contida no domínio do tempo. Das quais as medidas de alisamento por média são um excelente exemplo. Filtros windowed-sinc, por outro lado, são fortes performers no domínio da freqüência. Com equalização no processamento de áudio como um exemplo típico. Há uma comparação mais detalhada de ambos os tipos de filtros no domínio do tempo versus desempenho de domínio de freqüência de filtros. Se você tiver dados para os quais o tempo e o domínio de freqüência são importantes, então você pode querer dar uma olhada em Variações na Média Móvel. Que apresenta um número de versões ponderadas da média móvel que são melhores nisso. A média móvel de comprimento (N) pode ser definida como escrita como é tipicamente implementada, com a amostra de saída corrente como a média das amostras (N) anteriores. Visto como um filtro, a média móvel executa uma convolução da seqüência de entrada (xn) com um pulso retangular de comprimento (N) e altura (1N) (para fazer a área do pulso e, portanto, o ganho do filtro , 1 ). Na prática, é melhor tomar (N) ímpar. Embora uma média móvel possa também ser calculada usando um número par de amostras, usar um valor ímpar para (N) tem a vantagem de que o atraso do filtro será um número inteiro de amostras, uma vez que o atraso de um filtro com (N) Amostras é exactamente ((N-1) 2). A média móvel pode então ser alinhada exatamente com os dados originais deslocando-o por um número inteiro de amostras. Domínio Dado que a média móvel é uma convolução com um pulso retangular, a sua resposta de frequência é uma função sinc. Isso torna algo como o dual do filtro windowed-sinc, uma vez que é uma convolução com um pulso sinc que resulta em uma resposta de freqüência retangular. É esta resposta de freqüência de sinc que faz com que a média móvel seja um desempenho fraco no domínio da freqüência. No entanto, ele funciona muito bem no domínio do tempo. Portanto, é perfeito para suavizar os dados para remover o ruído, enquanto ao mesmo tempo ainda mantém uma rápida resposta passo (Figura 1). Para o típico Ruído Gaussiano Branco Aditivo (AWGN) que é freqüentemente assumido, a média (N) de amostras tem o efeito de aumentar a SNR por um fator de (sqrt N). Como o ruído para as amostras individuais não está correlacionado, não há razão para tratar cada amostra de forma diferente. Assim, a média móvel, que dá a cada amostra o mesmo peso, vai se livrar da quantidade máxima de ruído para uma dada nitidez resposta passo. Implementação Porque é um filtro FIR, a média móvel pode ser implementada através de convolução. Ele terá então a mesma eficiência (ou falta dela) como qualquer outro filtro FIR. No entanto, também pode ser implementado recursivamente, de uma forma muito eficiente. Segue-se diretamente a partir da definição de que esta fórmula é o resultado das expressões para (yn) e (yn1), ou seja, onde observamos que a mudança entre (yn1) e (yn) é que um termo extra (xn1N) aparece em O final, enquanto o termo (xn-N1N) é removido desde o início. Nas aplicações práticas, muitas vezes é possível deixar de fora a divisão por (N) para cada termo, compensando o ganho resultante de (N) em outro lugar. Esta implementação recursiva será muito mais rápida que a convolução. Cada novo valor de (y) pode ser calculado com apenas duas adições, em vez das (N) adições que seriam necessárias para uma implementação direta da definição. Uma coisa a olhar para fora com uma implementação recursiva é que os erros de arredondamento irá acumular. Isso pode ou não pode ser um problema para o aplicativo, mas também implica que essa implementação recursiva realmente funcionará melhor com uma implementação inteira do que com números de ponto flutuante. Isso é bastante incomum, uma vez que uma implementação de ponto flutuante é geralmente mais simples. A conclusão de tudo isso deve ser que você nunca deve subestimar a utilidade do simples filtro de média móvel em aplicações de processamento de sinal. Filter Design Tool Este artigo é complementado com uma ferramenta Filter Design. Experimente com diferentes valores para (N) e visualize os filtros resultantes. Tente agora
Estratégias de negociação Forex Um dos meios mais poderosos de ganhar um comércio é o portfólio de estratégias de negociação Forex aplicadas por comerciantes em diferentes situações. Seguir um único sistema o tempo todo não é suficiente para um comércio bem-sucedido. Cada comerciante deve saber como enfrentar todas as condições do mercado, o que, no entanto, não é tão fácil, e exige um profundo estudo e compreensão da economia. Para ajudá-lo a atender às suas necessidades educacionais e criar seu próprio portfólio de estratégias de negociação, a IFC Markets fornece a você recursos confiáveis na negociação e informações completas sobre todas as estratégias de negociação forex populares e simples aplicadas por comerciantes bem-sucedidos. As estratégias de negociação que representamos são adequadas para todos os comerciantes que são iniciantes no comércio ou querem melhorar suas habilidades. Todas as estratégias classificadas e explicadas abaixo são para fins educacionais e podem ser ap...
Comments
Post a Comment