Tuesday 14 November 2017

Moving Average Drift


Estou implementando um filtro de média móvel de passagem múltipla 80-72-64-48 para um sistema incorporado em C e em ponto fixo. A implementação é um buffer circular onde eu estou mantendo uma soma executando e calculando yn yn-1 xn - xn-M onde M é o comprimento de um filtro. Isso é feito para cada subfiltro com a saída de uma porção como entrada para outra. Estou ampliando meus coeficientes em 2, o que me dá coeficientes de comprimento 2 ou 2 dependendo do comprimento do filtro. Em seguida, o resultado é reduzido novamente em 2 para obter a saída correta. Agora, tudo parece ser bom em baixas escalas de tempo, mas por longos tempos eu tenho uma deriva. O motivo da implementação recursiva é salvar cálculos em um processador incorporado. Eu incluí a imagem de alguns dos internos do meu filtro, isto é, quando uma resposta passo é aplicada e podemos ver as funções de transferência dos filtros tomando forma, quadrado, triângulo e, em seguida, aproximando um gaussiano para que o filtro esteja funcionando como esperado. Existe alguma maneira de corrigir isso, e onde é a fonte mais provável disso. É essa deriva devido a um pouco se perder na mudança ou outra coisa. A deriva não está presente para entradas de CC, mas para sinais de CA, ele se desloca lentamente. SOLUÇÃO: O problema estava no acumulador como robert sugeriu nos comentários. A questão era que um elemento do cálculo passara por um deslocamento para cima e para baixo, em comparação com o resto, o que criou um deslocamento redondo acumulado. Perguntou 27 de abril 15 às 21:12 é o seu acumulador, sendo arredondado ou quantificado de qualquer maneira, você deve se certificar de que o xn-M que é subtraído é exatamente o mesmo valor que xn que foi adicionado M amostras há. Então você realmente quer fazer uma soma móvel. Ao invés de uma média móvel e dimensionar a saída da sua soma móvel (com 1M) para obter a média. Isso é bastante factível e ainda melhor feito em ponto fixo e não em ponto flutuante. Ndash robert bristow-johnson 27 de abril 15 às 22:52 Cálculo dos coeficientes Eu suponho que você divide por M após cada estágio e esse é o coeficiente que você escala Isso provavelmente é a causa do deslocamento. Melhor depois dividir por prod Mi no final de todos os filtros. Você precisa acompanhar as amplitudes internas, pois você eventualmente irá transbordar os acumuladores. No entanto, isso é facilmente resolvido através da aritmética de módulo (dos quais o complemento de dois anos é um caso especial). Ndash Oscar 28 de abril 15 às 7:00 Oscar, este é um filtro de ponto fixo. O que significa que eu apenas aritmico inteiro. Para uma média móvel do comprimento gt 1 com ganho 1, as constantes do filtro serão uma fração que não é representável em números inteiros. Assim, os coeficientes são dimensionados para torná-los inteiros, deixando-os deslocando x muitos bits. Devido a isso, a saída final deve ser deslocada também para a direita por tantos bits. Não consigo manter uma soma executando através de todos os 4 filtros sem restaurar a saída no meio, o sinal de entrada é de 16 bits e com o coeficiente de escala e comprimentos Um único filtro usa todo o meu espaço de acumulação de 32 bits ndash user70614 28 de abril 15 às 8: 20 O Guia de cientistas e engenheiros para processamento de sinal digital Por Steven W. Smith, Ph. D. Uma tremenda vantagem do filtro de média móvel é que ele pode ser implementado com um algoritmo que é muito rápido. Para entender esse algoritmo, imagine passar um sinal de entrada, x, através de um filtro de média móvel de sete pontos para formar um sinal de saída, y. Agora, veja como dois pontos de saída adjacentes, y 50 e y 51 são calculados: são quase os mesmos pontos de cálculo x 48 a x 53 devem ser adicionados para y 50 e novamente para y 51. Se y 50 já foi calculado , A maneira mais eficiente de calcular y 51 é: Uma vez que y 51 foi encontrado usando y 50, então y 52 pode ser calculado a partir da amostra y 51, e assim por diante. Depois que o primeiro ponto é calculado em y, todos os outros pontos podem ser encontrados com apenas uma única adição e subtração por ponto. Isso pode ser expresso na equação: Observe que esta equação usa duas fontes de dados para calcular cada ponto na saída: pontos da entrada e pontos previamente calculados da saída. Isso é chamado de equação recursiva, o que significa que o resultado de um cálculo é usado em cálculos futuros. (O termo recursivo também tem outros significados, especialmente em ciência da computação). O Capítulo 19 discute uma variedade de filtros recursivos com mais detalhes. Esteja ciente de que o filtro recursivo médio móvel é muito diferente dos filtros recursivos típicos. Em particular, a maioria dos filtros recursivos tem uma resposta de impulso infinitamente longa (IIR), composta de sinusoides e exponenciais. A resposta de impulso da média móvel é um pulso retangular (resposta de impulso finito, ou FIR). Este algoritmo é mais rápido do que outros filtros digitais por vários motivos. Primeiro, existem apenas dois cálculos por ponto, independentemente do comprimento do kernel de filtro. Em segundo lugar, a adição e a subtração são as únicas operações matemáticas necessárias, enquanto a maioria dos filtros digitais requer uma multiplicação demorada. Em terceiro lugar, o esquema de indexação é muito simples. Cada índice na Eq. 15-3 é encontrado por adicionar ou subtrair constantes inteiras que podem ser calculadas antes do início da filtragem (ou seja, p e q). Além disso, todo o algoritmo pode ser realizado com representação inteira. Dependendo do hardware utilizado, os números inteiros podem ser mais do que uma ordem de grandeza mais rápida que o ponto flutuante. Surpreendentemente, a representação de números inteiros funciona melhor do que o ponto flutuante com esse algoritmo, além de ser mais rápido. O erro de arredondamento da aritmética de ponto flutuante pode produzir resultados inesperados se você não for cuidadoso. Por exemplo, imagine um sinal de 10 000 amostras sendo filtrado com este método. A última amostra no sinal filtrado contém o erro acumulado de 10.000 adições e 10.000 subtrações. Isso aparece no sinal de saída como um deslocamento de derivação. Inteiros não têm esse problema porque não há erro de arredondamento na aritmética. Se você deve usar ponto flutuante com este algoritmo, o programa na Tabela 15-2 mostra como usar um acumulador de dupla precisão para eliminar essa deriva. Tenho uma questão sobre a derivação da velocidade média de deriva em um condutor: a velocidade de deriva é a Velocidade média que uma carga livre movendo-se em um condutor foi devido à influência de um campo elétrico aplicado ao condutor. Em um metal, a carga livre será um elétron. À medida que se deslocam através do condutor, os elétrons freqüentemente se toparão com íons. Se é o tempo livre médio do elétron, ou seja, o tempo médio entre colisões sucessivas, então, entre duas colisões, a ação de um campo elétrico externo tornará o elétron acelerado por (Eem), onde E é a força do campo (e Essa força é constante), e a carga de um elétron, e a massa do elétron. Nos livros de texto comuns, essa quantidade (Eem) é igual à magnitude da velocidade de deriva no condutor. Isso confunde, uma vez que a quantidade expressa a velocidade máxima média obtida pelo elétron, ou seja, a velocidade que ele tem antes de colidir com o próximo íon. Mas a velocidade da deriva deve ser a velocidade média do elétron devido ao campo, então eu acho que sua magnitude deve ser apenas metade dessa quantidade. Perguntou 12 de abril 15 às 3:26 TonyK Pontuação imprópria confunde o leitor. Isso, e outras questões relacionadas à clareza do título, foram discutidos com alguma extensão no meta. A publicação em grande parte upvoted é o resultado da entrada de outros usuários através de muitos comentários (a maioria dos quais agora foi excluída). Não faz quotarmquot ninguém além da pessoa tentando obter uma resposta quando vejo má pontuação, ortografia, etc. Eu sou menos provável que faça o esforço extra para entender a questão. Que dano faz para lembrar as pessoas sobre as melhores práticas ndash DanielSank 1 de outubro 15 às 22:23 Eu acho que a descrição do livro de texto é um caso de sair da mão. Se você verificar en. wikipedia. orgwikiDriftvelocity, diz que a velocidade da deriva é um fator do campo elétrico aplicado e da mobilidade do transportador. No entanto, se você pesquisar a mobilidade do transportador, en. wikipedia. orgwikiElectronmobility diz que o tipo de aceleração que você descreve é ​​possível em sólidos para distâncias tão pequenas quanto o tempo médio de trajeto livre, mas que, nesses casos, a velocidade e a mobilidade da deriva não são significativos. Então, acho que a velocidade da deriva deve ser para dispersões múltiplas. (Você ainda tem uma velocidade de deriva para os buracos e outro para os elétrons.) Para ser justo para a apresentação do livro didático, tal descrição geralmente surge em uma discussão de por que muitos materiais são Ohmic, especificamente a situação de mobilidade de campo baixo, que é Muitas vezes constante (velocidade de deriva proporcional ao campo elétrico aplicado). A idéia é que existe uma velocidade térmica muito grande do transportador, e que, para o campo elétrico aplicado, a velocidade não alterou toda a porcentagem em porcentagem. Então, para um tempo característico efetivo entre colisões efetivas, o tempo entre colisões realmente não mudou muito. Assim, os campos mais fortes apenas têm efeitos proporcionalmente mais fortes e mudanças na velocidade. Nesse sentido, o fator de dois não é o problema, é apenas um tempo característico e, no limite de campo baixo, o tempo característico não muda para diferentes campos aplicados. Não é literalmente um tempo entre colisões clássicas literais de partículas clássicas. Qual é o tempo característico É importante certificar-se de que você sabe que a velocidade média que você está tentando encontrar (a velocidade da deriva) não é realmente a velocidade média do tempo de qualquer elétron particular. Em vez disso, o que você faz é que você tome o impulso de cada elétron e adicione-os para obter o impulso total dos elétrons, divida-o pelo número de elétrons para obter o impulso médio dos elétrons e, em seguida, resolva isso para a velocidade. Então é realmente uma média espacial. Há sentidos onde isso pode ser muito próximo de uma média de tempo, mas isso pode ser menos útil. OK, então alguns elétrons estão se movendo mais devagar, alguns estão se movendo mais rápido. Em qualquer momento (ou pequeno intervalo de tempo), alguns deles estão chegando perto o suficiente para as outras partes do fio (ou perto o suficiente um do outro) que eles trocam o impulso com eles, portanto, não mantenha todo o impulso que o campo elétrico lhes daria Nesse momento (ou pequeno intervalo de tempo). Na ausência de um campo aplicado, os elétrons como um grupo têm uma distribuição de velocidades, algumas mais lentas e algumas mais rápidas e algumas apontando em direções diferentes. Em um intervalo de tempo, pode ser que o elétron em uma região particular mude de um mais rápido para um mais lento, ou de um que vai em uma direção para uma em outra direção. Mas a distribuição de velocidades permanece a mesma. Então, na realidade, o campo elétrico pode fornecer impulso para cada elétron, mas, às vezes, em vez de obter esse impulso e ir mais nessa direção, o elétron troca com outros. Agora que sabemos o que realmente acontece, vamos ver o caso de nenhum campo elétrico aplicado, mas fazer uma simplificação excessivamente bruta. Esta simplificação excessivamente grosseira é dizer que o elétron passa em linha reta em qualquer velocidade e depois é atingido muito rapidamente e começa a ir em direção aleatória e velocidade aleatória (mas escolhido aleatoriamente de uma distribuição de probabilidade como a de toda a coleção De elétrons). Essa simplificação maciça e bruta corretamente obtém que a velocidade de um elétron às vezes é imutável, e às vezes muda, mas a distribuição geral de probabilidade da coleção é global. (O que depende da temperatura, dos metais normais e da temperatura ambiente, a maioria dos elétrons está viajando a cerca de 106 metros por segundo, perto de 1 da velocidade da luz, muito rápido, e muitos não estão indo muito mais rápido e nem muitos estão indo Muito mais lento e eles estão viajando igualmente em todas as direções dentro do fio.) Então, você pode simplificar demais e, em seguida, tentar simplificar demais o tempo entre as colisões, que é aproximadamente relacionado com o quão longe são as coisas e sua velocidade. Sua velocidade é principalmente a mesma. Então há um tempo entre colisões. Esse é o tempo característico, mas não há realmente uma velocidade de deriva, porque não está realmente se movendo em linhas retas, em seguida, ficando bem duro muito rapidamente. É apenas uma história que é equivalente o suficiente para obter algumas respostas corretas. O suficiente das características é correto para explicar por que um material é Ohmico no sentido de que, para muitos campos diferentes, a proporcionalidade entre densidade de corrente e campo elétrico é constante. Não é realmente constante, depende da densidade e temperatura e tal. Então, qual é a velocidade da deriva realmente e de onde é realmente o que é realmente correto, é a média espacial, então você tem vetores de velocidade enormes (106 metros por segundo) pertencentes a um número muito maior de elétrons (10 ou mais) Apontando em muitas direções apontando de cada lado. Portanto, os 10 vetores mais estão apontando em 10 ou mais direções diferentes. Mas eles não medem para zero quando há um campo aplicado, há um pouco mais apontando de um jeito do que o caminho oposto, e um pouco maior em algumas direções do que outros. Essa média espacial das velocidades é a velocidade da deriva. É realmente apenas a densidade de corrente total escrita como se fosse uma velocidade média das cargas. Isso ocorre devido ao efeito líquido do fio e do campo elétrico. Vamos falar sobre isso mais. Como o espalhamento contorna o campo elétrico Esquece o campo elétrico por enquanto, vamos ver o que o fio faz e pode fazer para os elétrons. O fio possui operadoras de celular que podem se deslocar e foram partes mais ou menos fixas em relação à outra. Como partes do trem, todo o trem pode se mover, mas cada cadeira no trem tem uma distância fixa das outras cadeiras do trem. Se o trem começa a se mover e uma pessoa estiver sentada na cadeira, a cadeira pode empurrá-los até que estejam se movendo com o trem. Mesmo com o fio. Você pode colocar as mãos ao longo de cada parte do fio e movê-lo. Quando você faz, todo o fio se move exatamente como o trem se move. Mas no trem, se houvesse uma bola jogada diretamente no ar logo antes do trem começar a mover-se, por um instante você tem uma bola não se movendo em um trem em movimento. Mesmo com os elétrons móveis, em certo sentido, é livre do fio, não está preso a nenhum lugar, então o fio começa a se mover e o elétron encontra-se em repouso (na verdade, na maioria das vezes ele se move em 106 Metros por segundo, mas em média espacial está em repouso). Assim, os elétrons encontram-se em repouso (média espacial) em um fio móvel. Mas, assim como a bola eventualmente atinge a parte de trás do trem ou o chão do trem, os elétrons são arrastados eventualmente. O fio que corre para eles atinge-o mais de uma direção do que o outro. No início, eles estão correndo em todas as direções a velocidades iguais, mas quando atingiram parte do fio, essa parte do fio está se movendo, então, quando eles batem na cabeça, eles são pressionados e quando eles ultrapassam eles são empurrados para trás com menos dificuldade, o O efeito líquido é que eles começam a se mover na direção do fio, à velocidade do fio. Então, agora, vamos abrir o campo elétrico. Imagine um campo elétrico apontando na direção x, então quer acelerar elétrons na direção - x. Mas e se o fio se movesse na direção x. Se ele se movesse na velocidade certa, os elétrons se moveriam na direção x tanto quanto na média espacial, pois o campo elétrico os faz entrar na direção - x. Então, o efeito líquido é que os elétrons se movimentariam igualmente em todas as direções. Isso é exatamente o que acontece no quadro movendo-se à velocidade da deriva. Nessa moldura os elétrons se movem igualmente em toda direção, o fio está se movendo à velocidade de deriva e existe um campo elétrico. Isso é literalmente de onde a velocidade da deriva vem. A velocidade do fio em relação à velocidade média dos elétrons que produz tanto aceleração das interações elétron-fio como o elétron obtém das interações elétron-elétrico-campo. Uma visão muito simples das coisas que acontecem dentro de um condutor. Forças de fricção que os elétrons lentos são proporcionais à velocidade dos elétrons. Existe, portanto, alguma velocidade final na qual o atrito força e força devido ao balanço do campo elétrico. Esta velocidade pode ser visualizada como a velocidade de deriva. Refere-se a uma velocidade na qual todos os elétrons movem o condutor na direção do campo aplicado. As forças de fricção são causadas por colisões elétron-elétron e eletron-fonão. Então, essa é a forma como a energia é perdida devido à entropia. Respondeu 10 de julho 15 às 9:40

No comments:

Post a Comment