Calculando a média móvel Este VI calcula e exibe a média móvel, usando um número pré-selecionado. Primeiro, o VI inicializa dois registros de deslocamento. O registro de deslocamento superior é inicializado com um elemento e, continuamente, adiciona o valor anterior com o novo valor. Este registro de deslocamento mantém o total das últimas x medições. Depois de dividir os resultados da função de adicionar com o valor pré-selecionado, o VI calcula o valor médio móvel. O registro de deslocamento inferior contém uma matriz com a dimensão Média. Este registro de deslocamento mantém todos os valores da medida. A função de substituição substitui o novo valor após cada loop. Este VI é muito eficiente e rápido porque usa a função de elemento de substituição dentro do loop while e ele inicializa a matriz antes de entrar no loop. Este VI foi criado no LabVIEW 6.1. Bookmark amp ShareMoving modelos de suavização média e exponencial Como um primeiro passo para mover além dos modelos médios, modelos de caminhada aleatórios e modelos de tendência linear, padrões e tendências não-sazonais podem ser extrapolados usando um modelo de média móvel ou suavização. O pressuposto básico por trás da média e dos modelos de suavização é que as séries temporais são localmente estacionárias com uma média que varia lentamente. Por isso, tomamos uma média móvel (local) para estimar o valor atual da média e, em seguida, use isso como a previsão para um futuro próximo. Isso pode ser considerado como um compromisso entre o modelo médio e o modelo random-walk-without-drift. A mesma estratégia pode ser usada para estimar e extrapolar uma tendência local. Uma média móvel geralmente é chamada de uma versão quotsmoothedquot da série original porque a média a curto prazo tem o efeito de suavizar os solavancos na série original. Ao ajustar o grau de alisamento (a largura da média móvel), podemos esperar encontrar algum tipo de equilíbrio ideal entre o desempenho dos modelos de caminhada aleatória e média. O tipo mais simples de modelo de média é o. Média Móvel simples (igualmente ponderada): A previsão para o valor de Y no tempo t1 que é feita no tempo t é igual à média simples das observações m mais recentes: (Aqui e em outro lugar usarei o símbolo 8220Y-hat8221 para repousar Para uma previsão das séries temporais Y feitas o mais cedo possível por um determinado modelo.) Esta média é centrada no período t (m1) 2, o que implica que a estimativa da média local tende a ficar para trás do verdadeiro Valor da média local em cerca de (m1) 2 períodos. Assim, dizemos que a idade média dos dados na média móvel simples é (m1) 2 em relação ao período para o qual a previsão é calculada: esta é a quantidade de tempo pelo qual as previsões tenderão a atrasar os pontos de viragem nos dados . Por exemplo, se você estiver calculando a média dos últimos 5 valores, as previsões serão cerca de 3 períodos atrasados na resposta a pontos de viragem. Observe que se m1, o modelo de média móvel simples (SMA) é equivalente ao modelo de caminhada aleatória (sem crescimento). Se m for muito grande (comparável ao comprimento do período de estimativa), o modelo SMA é equivalente ao modelo médio. Tal como acontece com qualquer parâmetro de um modelo de previsão, é costume ajustar o valor de k para obter o melhor quotfitquot para os dados, ou seja, os menores erros de previsão em média. Aqui é um exemplo de uma série que parece exibir flutuações aleatórias em torno de uma média que varia lentamente. Primeiro, vamos tentar ajustá-lo com um modelo de caminhada aleatória, o que equivale a uma média móvel simples de 1 termo: o modelo de caminhada aleatória responde muito rapidamente às mudanças na série, mas ao fazê-lo, elege muito da quotnoisequot no Dados (as flutuações aleatórias), bem como o quotsignalquot (a média local). Se, em vez disso, tentemos uma média móvel simples de 5 termos, obtemos um conjunto de previsões mais lisas: a média móvel simples de 5 meses produz erros significativamente menores do que o modelo de caminhada aleatória neste caso. A idade média dos dados nesta previsão é de 3 ((51) 2), de modo que tende a atrasar os pontos de viragem em cerca de três períodos. (Por exemplo, uma desaceleração parece ter ocorrido no período 21, mas as previsões não se desviam até vários períodos depois). Observe que as previsões de longo prazo do modelo SMA são uma linha reta horizontal, assim como na caminhada aleatória modelo. Assim, o modelo SMA assume que não há tendência nos dados. No entanto, enquanto as previsões do modelo de caminhada aleatória são simplesmente iguais ao último valor observado, as previsões do modelo SMA são iguais a uma média ponderada de valores recentes. Os limites de confiança calculados pela Statgraphics para as previsões de longo prazo da média móvel simples não se ampliam à medida que o horizonte de previsão aumenta. Isso obviamente não está correto. Infelizmente, não existe uma teoria estatística subjacente que nos diga como os intervalos de confiança devem se ampliar para esse modelo. No entanto, não é muito difícil calcular estimativas empíricas dos limites de confiança para as previsões do horizonte mais longo. Por exemplo, você poderia configurar uma planilha em que o modelo SMA seria usado para prever 2 passos à frente, 3 passos à frente, etc., dentro da amostra de dados históricos. Você poderia então calcular os desvios padrão da amostra dos erros em cada horizonte de previsão e, em seguida, construir intervalos de confiança para previsões de longo prazo, adicionando e subtraindo múltiplos do desvio padrão apropriado. Se tentarmos uma média móvel simples de 9 termos, obtemos previsões ainda mais suaves e mais de um efeito de atraso: a idade média é agora de 5 períodos (91) 2). Se tomarmos uma média móvel de 19 termos, a média de idade aumenta para 10: Observe que, de fato, as previsões estão atrasadas em torno de 10 pontos. Qual quantidade de suavização é melhor para esta série. Aqui está uma tabela que compara suas estatísticas de erro, incluindo também uma média de 3 termos: Modelo C, a média móvel de 5 termos, produz o menor valor de RMSE por uma pequena margem ao longo dos 3 Médias temporais e de 9 termos, e suas outras estatísticas são quase idênticas. Assim, entre os modelos com estatísticas de erro muito semelhantes, podemos escolher se preferimos um pouco mais de capacidade de resposta ou um pouco mais de suavidade nas previsões. (Retornar ao topo da página.) Browns Suavização exponencial simples (média móvel ponderada exponencialmente) O modelo de média móvel simples descrito acima tem a propriedade indesejável de que trata as últimas observações k de forma igualitária e ignora completamente todas as observações precedentes. Intuitivamente, os dados passados devem ser descontados de forma mais gradual - por exemplo, a observação mais recente deve ter um pouco mais de peso que o segundo mais recente, e o segundo mais recente deve ter um pouco mais de peso do que o terceiro mais recente, e em breve. O modelo de suavização exponencial simples (SES) realiza isso. Deixe 945 indicar uma constante de quotesmoothing (um número entre 0 e 1). Uma maneira de escrever o modelo é definir uma série L que represente o nível atual (isto é, o valor médio local) da série como estimado a partir de dados até o presente. O valor de L no tempo t é calculado de forma recursiva a partir de seu próprio valor anterior como este: Assim, o valor suavizado atual é uma interpolação entre o valor suavizado anterior e a observação atual, onde 945 controla a proximidade do valor interpolado para o mais recente observação. A previsão para o próximo período é simplesmente o valor suavizado atual: Equivalentemente, podemos expressar a próxima previsão diretamente em termos de previsões anteriores e observações anteriores, em qualquer uma das seguintes versões equivalentes. Na primeira versão, a previsão é uma interpolação entre previsão anterior e observação anterior: na segunda versão, a próxima previsão é obtida ajustando a previsão anterior na direção do erro anterior em uma quantidade fracionada de 945. É o erro cometido em Tempo t. Na terceira versão, a previsão é uma média móvel ponderada exponencialmente (com desconto) com o fator de desconto 1- 945: a versão de interpolação da fórmula de previsão é a mais simples de usar se você estiver implementando o modelo em uma planilha: ela se encaixa em uma Célula única e contém referências de células que apontam para a previsão anterior, a observação anterior e a célula onde o valor de 945 é armazenado. Note-se que se 945 1, o modelo SES é equivalente a um modelo de caminhada aleatória (sem crescimento). Se 945 0, o modelo SES é equivalente ao modelo médio, supondo que o primeiro valor suavizado seja igual à média. (Voltar ao topo da página.) A idade média dos dados na previsão de suavização simples-exponencial é 1 945 em relação ao período para o qual a previsão é calculada. (Isso não deve ser óbvio, mas pode ser facilmente demonstrado pela avaliação de uma série infinita.) Portanto, a previsão média móvel simples tende a atrasar os pontos de viragem em cerca de 1 945 períodos. Por exemplo, quando 945 0.5 o atraso é de 2 períodos quando 945 0.2 o atraso é de 5 períodos quando 945 0.1 o atraso é de 10 períodos e assim por diante. Para uma média de idade dada (ou seja, a quantidade de lag), a previsão de suavização exponencial simples (SES) é um pouco superior à previsão da média móvel simples (SMA) porque coloca um peso relativamente maior na observação mais recente - isto é. É um pouco mais quotresponsivech para as mudanças ocorridas no passado recente. Por exemplo, um modelo SMA com 9 termos e um modelo SES com 945 0,2 ambos têm uma idade média de 5 para os dados em suas previsões, mas o modelo SES coloca mais peso nos últimos 3 valores do que o modelo SMA e no Ao mesmo tempo, não possui 8220forget8221 sobre valores com mais de 9 períodos de tempo, como mostrado neste gráfico: Outra vantagem importante do modelo SES sobre o modelo SMA é que o modelo SES usa um parâmetro de suavização que é continuamente variável, portanto, pode otimizar facilmente Usando um algoritmo quotsolverquot para minimizar o erro quadrático médio. O valor ideal de 945 no modelo SES para esta série é 0.2961, como mostrado aqui: A idade média dos dados nesta previsão é 10.2961 3,4 períodos, o que é semelhante ao de uma média móvel simples de 6 termos. As previsões de longo prazo do modelo SES são uma linha direta horizontal. Como no modelo SMA e no modelo de caminhada aleatória sem crescimento. No entanto, note que os intervalos de confiança computados por Statgraphics agora divergem de forma razoável e que eles são substancialmente mais estreitos do que os intervalos de confiança para o modelo de caminhada aleatória. O modelo SES assume que a série é um pouco mais previsível do que o modelo de caminhada aleatória. Um modelo SES é realmente um caso especial de um modelo ARIMA. Então a teoria estatística dos modelos ARIMA fornece uma base sólida para o cálculo de intervalos de confiança para o modelo SES. Em particular, um modelo SES é um modelo ARIMA com uma diferença não-sazonal, um termo MA (1) e nenhum termo constante. Também conhecido como um modelo quotARIMA (0,1,1) sem constantequot. O coeficiente MA (1) no modelo ARIMA corresponde à quantidade 1- 945 no modelo SES. Por exemplo, se você ajustar um modelo ARIMA (0,1,1) sem constante para a série analisada aqui, o coeficiente MA (1) estimado é 0.7029, o que é quase exatamente um menos 0.2961. É possível adicionar a hipótese de uma tendência linear constante não-zero ao modelo SES. Para fazer isso, basta especificar um modelo ARIMA com uma diferença não-sazonal e um termo MA (1) com uma constante, ou seja, um modelo ARIMA (0,1,1) com constante. As previsões a longo prazo terão uma tendência que é igual à tendência média observada durante todo o período de estimação. Você não pode fazer isso em conjunto com o ajuste sazonal, porque as opções de ajuste sazonal são desativadas quando o tipo de modelo é definido como ARIMA. No entanto, você pode adicionar uma tendência exponencial constante a longo prazo a um modelo de suavização exponencial simples (com ou sem ajuste sazonal) usando a opção de ajuste de inflação no procedimento de Previsão. A taxa de quotinflação adequada (taxa de crescimento) por período pode ser estimada como o coeficiente de inclinação em um modelo de tendência linear ajustado aos dados em conjunto com uma transformação de logaritmo natural, ou pode ser baseado em outras informações independentes sobre perspectivas de crescimento a longo prazo . (Voltar ao topo da página.) Browns Linear (ou seja, duplo) Suavização exponencial Os modelos SMA e os modelos SES assumem que não há nenhuma tendência de nenhum tipo nos dados (o que normalmente é OK ou pelo menos não muito ruim para 1- Previsões passo a passo quando os dados são relativamente barulhentos) e podem ser modificados para incorporar uma tendência linear constante como mostrado acima. E quanto a tendências de curto prazo Se uma série exibir uma taxa de crescimento variável ou um padrão cíclico que se destaca claramente contra o ruído e, se houver necessidade de prever mais de 1 período à frente, a estimativa de uma tendência local também pode ser um problema. O modelo de alisamento exponencial simples pode ser generalizado para obter um modelo de alisamento exponencial linear (LES) que calcula estimativas locais de nível e tendência. O modelo de tendência mais simples do tempo é o modelo de suavização exponencial linear Browns, que usa duas séries suavizadas diferentes centradas em diferentes pontos no tempo. A fórmula de previsão é baseada em uma extrapolação de uma linha através dos dois centros. (Uma versão mais sofisticada deste modelo, Holt8217s, é discutida abaixo.) A forma algébrica do modelo de alisamento exponencial linear Brown8217s, como a do modelo de suavização exponencial simples, pode ser expressa em várias formas diferentes, mas equivalentes. A forma quotstandardquot deste modelo geralmente é expressa da seguinte maneira: Seja S denotar a série de suavização individual obtida pela aplicação de suavização exponencial simples para a série Y. Ou seja, o valor de S no período t é dado por: (Lembre-se que, sob simples Suavização exponencial, esta seria a previsão de Y no período t1.) Então, deixe Squot indicar a série duplamente suavizada obtida aplicando o alisamento exponencial simples (usando o mesmo 945) para a série S: Finalmente, a previsão para Y tk. Para qualquer kgt1, é dada por: Isto produz e 1 0 (isto é, traga um pouco e deixe a primeira previsão igual a primeira observação real) e e 2 Y 2 8211 Y 1. Após o que as previsões são geradas usando a equação acima. Isso produz os mesmos valores ajustados que a fórmula com base em S e S, se estes últimos foram iniciados usando S 1 S 1 Y 1. Esta versão do modelo é usada na próxima página que ilustra uma combinação de suavização exponencial com ajuste sazonal. Holt8217s Linear Exponential Suavizante Brown8217s modelo LES calcula estimativas locais de nível e tendência ao suavizar os dados recentes, mas o fato de que ele faz com um único parâmetro de suavização coloca uma restrição nos padrões de dados que ele pode caber: o nível e a tendência Não podem variar a taxas independentes. O modelo LES de Holt8217s aborda esse problema ao incluir duas constantes de suavização, uma para o nível e outra para a tendência. A qualquer momento t, como no modelo Brown8217s, existe uma estimativa L t do nível local e uma estimativa T t da tendência local. Aqui, eles são computados de forma recursiva a partir do valor de Y observado no tempo t e as estimativas anteriores do nível e tendência por duas equações que aplicam o alisamento exponencial separadamente. Se o nível estimado e a tendência no tempo t-1 são L t82091 e T t-1. Respectivamente, então a previsão de Y tshy que teria sido feita no tempo t-1 é igual a L t-1 T t-1. Quando o valor real é observado, a estimativa atualizada do nível é calculada de forma recursiva interpolando entre Y tshy e sua previsão, L t-1 T t-1, usando pesos de 945 e 1- 945. A alteração no nível estimado, Lt 8209 L t82091. Pode ser interpretado como uma medida ruim da tendência no tempo t. A estimativa atualizada da tendência é então calculada de forma recursiva interpolando entre L t 8209 L t82091 e a estimativa anterior da tendência, T t-1. Usando pesos de 946 e 1-946: a interpretação da constante de simulação de tendência 946 é análoga à da constante de alívio de nível 945. Modelos com valores pequenos de 946 assumem que a tendência muda muito lentamente ao longo do tempo, enquanto modelos com 946 maiores assumem que está mudando mais rapidamente. Um modelo com um grande 946 acredita que o futuro distante é muito incerto, porque os erros na estimativa de tendência se tornam bastante importantes ao prever mais de um período à frente. (Voltar ao topo da página.) As constantes de suavização 945 e 946 podem ser estimadas da maneira usual, minimizando o erro quadrático médio das previsões de 1 passo à frente. Quando isso é feito em Statgraphics, as estimativas revelam-se 945 0,3048 e 946 0,008. O valor muito pequeno de 946 significa que o modelo assume mudanças muito pequenas na tendência de um período para o outro, então, basicamente, esse modelo está tentando estimar uma tendência de longo prazo. Por analogia com a noção de idade média dos dados utilizados na estimativa do nível local da série, a idade média dos dados utilizados na estimativa da tendência local é proporcional a 1 946, embora não exatamente igual a ela. . Neste caso, isso é 10.006 125. Este não é um número muito preciso na medida em que a precisão da estimativa de 946 não é realmente 3 casas decimais, mas é da mesma ordem geral de grandeza que o tamanho da amostra de 100, então Este modelo está com uma média de bastante história na estimativa da tendência. O gráfico de previsão abaixo mostra que o modelo de LES estima uma tendência local um pouco maior no final da série do que a tendência constante estimada no modelo SEStrend. Além disso, o valor estimado de 945 é quase idêntico ao obtido pela montagem do modelo SES com ou sem tendência, então este é quase o mesmo modelo. Agora, isso parece previsões razoáveis para um modelo que deveria estimar uma tendência local Se você 8220eyeball8221 este gráfico, parece que a tendência local virou para baixo no final da série O que aconteceu Os parâmetros deste modelo Foi estimado pela minimização do erro quadrado das previsões de 1 passo à frente, não de previsões a mais longo prazo, caso em que a tendência não faz muita diferença. Se tudo o que você está procurando é erros de 1 passo a passo, você não está vendo a imagem maior das tendências em relação a (digamos) 10 ou 20 períodos. Para obter este modelo mais em sintonia com a extrapolação dos dados no olho, podemos ajustar manualmente a constante de alívio da tendência, de modo que ele use uma linha de base mais curta para a estimativa de tendência. Por exemplo, se optar por definir 946 0,1, a idade média dos dados utilizados na estimativa da tendência local é de 10 períodos, o que significa que estamos em média a tendência nos últimos 20 períodos ou mais. Aqui é o que parece o gráfico de previsão se definimos 946 0,1 enquanto mantemos 945 0,3. Isso parece intuitivamente razoável para esta série, embora seja provavelmente perigoso extrapolar esta tendência mais de 10 períodos no futuro. E as estatísticas de erro Aqui está uma comparação de modelo para os dois modelos mostrados acima, bem como três modelos SES. O valor ideal de 945 para o modelo SES é de aproximadamente 0,3, mas resultados semelhantes (com um pouco mais ou menos capacidade de resposta, respectivamente) são obtidos com 0,5 e 0,2. (A) Holts linear exp. Alisamento com alpha 0.3048 e beta 0.008 (B) Holts linear exp. Alisamento com alfa 0.3 e beta 0.1 (C) Suavização exponencial simples com alfa 0.5 (D) Suavização exponencial simples com alfa 0.3 (E) Suavização exponencial simples com alfa 0.2 Suas estatísticas são quase idênticas, então realmente podemos usar a escolha com base De erros de previsão de 1 passo à frente na amostra de dados. Temos de voltar atrás em outras considerações. Se acreditamos firmemente que faz sentido basear a estimativa da tendência atual sobre o que aconteceu nos últimos 20 períodos, podemos fazer um caso para o modelo LES com 945 0,3 e 946 0,1. Se quisermos ser agnósticos sobre se existe uma tendência local, então um dos modelos SES pode ser mais fácil de explicar e também daria mais previsões do meio da estrada para os próximos 5 ou 10 períodos. (Retornar ao topo da página.) Qual tipo de tendência-extrapolação é melhor: horizontal ou linear Evidências empíricas sugerem que, se os dados já foram ajustados (se necessário) para inflação, então pode ser imprudente extrapolar linear de curto prazo Tendências muito distantes no futuro. As tendências evidentes hoje podem diminuir no futuro devido a causas variadas, como obsolescência do produto, aumento da concorrência e recessões cíclicas ou aumentos em uma indústria. Por este motivo, o alisamento exponencial simples geralmente apresenta melhor fora da amostra do que seria de esperar, apesar da sua extrapolação de tendência horizontal de quotnaivequot. As modificações de tendências amortecidas do modelo de alisamento exponencial linear também são freqüentemente usadas na prática para introduzir uma nota de conservadorismo em suas projeções de tendência. O modelo LES da modificação amortecida pode ser implementado como um caso especial de um modelo ARIMA, em particular, um modelo ARIMA (1,1,2). É possível calcular intervalos de confiança em torno de previsões de longo prazo produzidas por modelos exponenciais de suavização, considerando-os como casos especiais de modelos ARIMA. (Beware: nem todo o software calcula os intervalos de confiança para esses modelos corretamente.) A largura dos intervalos de confiança depende de (i) o erro RMS do modelo, (ii) o tipo de alisamento (simples ou linear) (iii) o valor (S) da (s) constante (s) de suavização e (iv) o número de períodos adiante que você está prevendo. Em geral, os intervalos se espalham mais rápido, à medida que 945 se ampliam no modelo SES e se espalham muito mais rápido quando o alisamento linear, em vez do simples, é usado. Este tópico é discutido mais adiante na seção de modelos ARIMA das notas. (Voltar ao topo da página.) Exponentia l resposta média em mudança de movimento fpga Tenho um problema com o meu filtro, o filtro de média móvel ponderada exponencial (IIR 1.a ordem). Do livro: Compreendendo o processamento do sinal digital (Lyons Richard) Tenho a seguinte fórmula calculando a frequência 3dB (fc) do alfa. Alpha é o parâmetro para controlar o filtro. Equação diferencial do filtro: ynxnalpha (1 - alfa) yn-1 Relação entre fc e alfa: alfa cos (2fcfs) - 1 sqrtcos (2fcfs) - 4cos (2fcfs) 3 Se eu agora escolher uma frequência 3dB de 0,0794Hz (tempo Constante (TC) 2s) alfa 0,00169621. (Fs94Hz) Para uma primeira ordem de filtro IIR, o tempo de subida (ta) da resposta constante (de 10 a 90) é: ta2,2TC, o que resulta em ta 4,4s. Mas se eu simular a resposta passo a passo, meu tempo de subida é cerca de 3 vezes desse valor às 14s. Não posso explicar por que a resposta de passo do meu filtro difere tanto. Para o meu filtro de média móvel, o tempo de subida calculado e simulado é igual. Eu tenho o vi que é executado no FPGA anexado. Talvez alguém possa encontrar um erro. (Veja também o filtro alfa ou o filtro RC) A sua frequência de amostragem (fs) está correta Se o tempo de loop não corresponde, isso explicaria isso. Os seus tipos de dados se parecem bons (para obter alfa dentro de 1). Mas eu sugiro uma pequena alteração na implementação. Por enquanto, é um pouco propenso a rodar à deriva, porque (1-alfa) é repetidamente multiplicado pelo yn-1. Um método um pouco mais confiável é dizer yn yn-1 (alfa (xn-yn-1)). A diferença é sutil, mas me dá melhores resultados muitas vezes. E elimina um se multiplica. A propósito, o número do reinterpreto faz o mesmo que o seu convertido de FXP para o bool, em seguida, de volta. É um pouco menos confuso, no entanto. Estou um pouco perplexo com o loop temporizado que nunca percorre. Isso impõe o tempo dessa forma (eu assumi que não seria, então nunca usei, eu uso o Loop Timer em vez disso). CLD User desde rev 8.6. Mensagem 2 de 13 (963 Visualizações) Re: exponentia l media média resposta de passo fpga 10-01-2015 02:05 AM - editado 10-01-2015 02:17 AM obrigado pela sua resposta. 1, provendo minha freqüência de amostragem com o temporizador de loop. Minha entrada é 425.532 carrapatos que é igual a 94 Hz. Este tiquetaque é confirmado por ticks EWMA. - Talvez alguém possa testar o código e me dizer 2, encontrei sua abordagem na seção de truques e tipps do livro de Lyons. Vou tentar, mas você poderia explicar a rodada à deriva um pouco, eu sou bastante novo nesta área. Existe um benefício adicional de eliminar um multiplicador, exceto os recursos. A resposta de freqüência, a resposta de impulso e a resposta de passo são iguais 3, Se eu apenas mudar de bits, eu sou amável com esse método Não tenho certeza se a função reinterprate usa menos recursos. Mas obrigado por notar isso. 4, o loop temporizado itera todos os 425.532 tiques uma vez. Assim, com uma frequência de 94Hz, um valor é calculado pelo código, pois o código dentro do loop temporizado só precisa de uma iteração. Ou eu sinto falta de sua pergunta. Eu não tenho certeza do que outras informações você precisa. Eu tento comparar a resposta passo a passo de uma média móvel com uma média móvel exponencial (EWMA). Na verdade, eu só quero confirmar a teoria. Como mencionei acima para obter uma constante de tempo de 2s a uma taxa de amostragem de 94Hz, o alfa deve ser 0,00169. O tempo de subida da resposta de passo de 10 a 90 do valor final difere da teoria. O tempo de subida deve ser 4,4 com constante de tempo 2s, mas eu recebo quase 14s se eu executar meu código no FPGA. Eu confirmei que, com o alfa 0,00169, meu código leva amostras de 1297 para obter de 0,1 a 0,9 (o valor final é 1, valor inicial 0). Como você pode ver no meu código, verifico a hora do loop com o indicador marca o ewma para confirmar a taxa de amostragem do SCTL. Alguém pode confirmar as 1297 amostras que são necessárias em alfa 0,00169 Porque eu penso, que eu preciso de muitas amostras para alcançar o valor de 0,9. Eu já implementei a versão EWMA sugerida a partir da primeira resposta. O mesmo problema aqui. Mensagem 5 de 13 (913 Visualizações) Re: exponentia l resposta de mudança de média móvel fpga 10-01-2015 08:13 AM - editado 10-01-2015 08:15 AM 1, provendo minha freqüência de amostragem com o temporizador de loop. Minha entrada é 425.532 carrapatos que é igual a 94 Hz. Este tiquetaque é confirmado por ticks EWMA. - Talvez alguém possa testar o código e me dizer 2, encontrei sua abordagem na seção de truques e tipps do livro de Lyons. Vou tentar, mas você poderia explicar a rodada à deriva um pouco, eu sou bastante novo nesta área. Existe um benefício adicional de eliminar um multiplicador, exceto os recursos. A resposta de freqüência, a resposta de impulso e a resposta de passo são iguais 3, Se eu apenas mudar de bits, eu sou amável com esse método Não tenho certeza se a função reinterprate usa menos recursos. Mas obrigado por notar isso. 4, o loop temporizado itera todos os 425.532 tiques uma vez. Assim, com uma frequência de 94Hz, um valor é calculado pelo código, pois o código dentro do loop temporizado só precisa de uma iteração. Ou eu sinto falta de sua pergunta, usei uma planilha para simular e obtenho quase exatamente a mesma resposta (1299 ciclos para passar de 0,1 a 0,9). As planilhas são uma ferramenta útil para testar cálculos. 1. Ok. Nunca usei o Single-Cycle-Timed-Loop (SCTL) com o T escrito para a parada. Isso forçaria as funções de matemática a serem de ciclo único, mas não tenho certeza se isso é alguma vantagem. Eu só queria ter certeza de que o tempo foi confirmado, e é. 2. A derivação de rodada provavelmente não aparecerá, a menos que sua entrada seja pequena (menos de 0,1). Eu vejo agora que você tem 40 bits (39 direito do decimal) para o feedback. Isso leva um pouco de FPGA para se multiplicar, mas não terá problemas de arredondamento. Outras partes apenas tinham 18 bits (17 à direita do decimal), portanto, alfa (0,00169 - .000007) vezes, uma entrada de 0,1 seria 0.000169 - 0.000007 ou erro 7). Mas isso se multiplica também é de 40 bits, então você não deve ver nenhum problema. Normalmente, a saída yn tem menos bits, e irá rodar no último bit. Mas porque está em um loop multiplicado por 1-alfa a cada vez, a rodada às vezes acumula cada loop até que ele seja grande o suficiente para afetar os resultados de adição. É difícil de explicar, mas a minha regra geral é que eu espero um erro igual ao menor bit dividido por alfa, usando o método original, ou cerca de metade que usine o método de um único múltiplo. As respostas serão quase idênticas, com exceção de uma pequena diferença. A maior vantagem é salvar o espaço FPGA (e tempo de compilação). E você pode reduzir seu número de bits um pouco para economizar ainda mais. 3. São basicamente idênticos. E ambos os métodos são gratuitos em FPGA. Os bits não foram alterados, então nenhuma lógica é necessária, eles são simplesmente rotulados. 4. Eu acho que você respondeu bem. Geralmente, neste ponto, eu ajustaria o alfa até que meus resultados correspondiam ao que eu queria e segui em frente. Odeio não entender uma incompatibilidade, mas geralmente não tenho tempo para mergulhar nela. Mas, por causa da ciência, consideramos que sua fórmula pode ser errada. Eu acho que você pode estar usando uma fórmula para uma decadência exponencial contínua (e-ttau), não para uma decaimento exponencial discreto ((1-alfa) i). É mais fácil ver isso como uma função de passo de 1 a 0. Nesse caso, yn (para ngt0) é yn (1-alfa) (n). Podemos encontrar n para yn 0.9, como nlog1-alpha (0.9) 62, e n para yn 0.1, como 1361, para uma diferença de 1299. CLD User desde rev 8.6. Obrigado pela sua resposta detalhada. Quanto ao problema com o tempo de subida, acho que encontrei o erro. Você pode estar certo de que a fórmula não está correta, ou o que provavelmente é mal interpretado por mim e configurado no contexto incorreto. Quando eu estava de bicicleta em casa do trabalho, lembrei-me de uma função útil de labview: alisando coeficientes de filtro. Aqui você só precisa configurar tauTC e fs e calcula o nominal e o denominador para a média móvel exponencial e a média móvel. Como o indicador é alfa, eu poderia comparar o resultado com a fórmula que usei e houve uma grande diferença. O Labview usa a seguinte fórmula: alpha1-exp (-1 (fsTC)). Com esta fórmula TC2s é igual a alpha0,0053. E com este alfa minha simulação funciona Risetime 4,4s citando você: Geralmente, neste momento, eu ajustaria alfa até que meus resultados correspondessem ao que eu queria e segui em frente. Eu adoraria fazer o mesmo, mas como esta é minha tese de mestrado, eu tenho que resolver essas coisas. Agora, de volta aos problemas de arredondamento. Eu entendo, que os pequenos valores são um problema maior. Como esse filtro é usado em um Bloqueio, os valores serão REALMENTE pequenos. Mas eu já testei isso em nosso dispositivo de medição e funciona, por isso também vou testar sua versão, mas se eu não tiver problemas, acho que eu mantenho isso em 40bits. A simulação da seguinte configuração causou um erro de 2.3. Usando 57 bits reduziu o erro para abaixo de 1. Eu acho que 40bits devem ser suficientes. E no que diz respeito aos recursos, não tenho preocupações. Embora usando um myrio no final eu ainda tenho um monte de fatias DSP para a multiplicação e 10 FlipFlops grátis. Então eu acho que este tópico está resolvido. Obrigado pela sua grande ajuda e pensamentos interessantes. Legal Estou feliz por estar funcionando, agora. Eu cresci na era sem fatias DSP em FPGAs, e contagens de células menores, então ainda tendem a pensar nesses termos. Eu ainda prefiro passar 25 minutos de programação para reduzir meus tempos de compilação. Eu tive casos em que eu cortei o tempo de compilação de 90 minutos a 45 minutos, otimizando um pouco. Com um servidor poderoso para compilação, isso é menos importante. Uma dessas otimizações é reduzir as contagens de bits onde eu posso, especialmente para se multiplica. Por exemplo, o alfa é 160 e, para 0,0053, você também pode usar 12-4 (contagem de número inteiro negativo). Você também pode eliminar muitos bits superiores da sua entrada. 5 minutos para escolher a menor contagem de bits pode economizar facilmente 2-10 minutos para cada compilação. Minha segunda otimização é reduzir as multiplicações, mas com uma fatia DSP, isso não é tão importante. Não consigo encontrar boa documentação sobre as fatias do DSP (se você tiver algum, por favor, publique links), mas, como eu entendo, se você multiplicar números maiores (contagens de bits), ele precisa de fatias múltiplas e talvez seja hora de combinar os resultados. E mais um truque: escolha um alfa com um valor binário simples, como 1256 (você escolheu cerca de 1189) e mude o fs até obter o alisamento desejado. Em seguida, use uma constante para alfa. Multiplicar por uma constante 1256 é livre no FPGA (ele apenas desloca os bits). Por essa questão, fazer alfa constante pode otimizar as multiplicações um pouco. Dependendo da inteligência do otimizador, ele pode mudá-lo para um conjunto de adders em vez disso. As entradas do painel frontal são excelentes para que as coisas funcionem, mas as constantes otimizam muito melhor. Utilizador CLD desde a rev. 8.6. Se você tiver uma média de 16 vezes mais amostras (fs 16x o que era), você deve incluir mais 4 bits em seus comentários. Você já tem pleanty, de modo que talvez não seja importante a menos que você vá muito mais rápido. Caso contrário, aumentar fs provavelmente é bom. Se a entrada tiver ruído de baixa frequência, a amostragem não ajuda a eliminar isso. O ruído de alta freqüência, no entanto, reduz com o excesso de amostragem. Se, por exemplo, o ruído acima de 10Hz é -5dB (isto é, 10 a 0,5 vezes a amplitude do sinal que você gosta), e você amostra em 20Ss, você provavelmente pegará -5 dB em suas leituras iniciais. Se o seu -3dB (fc) também for 10Hz, então você acabará com um ruído de -8dB sobrado no seu sinal. Se, em vez disso, tomar 200Ss, grupos médios de 10, depois passar essas médias para o filtro, você não ajudará o ruído a 10Hz (você estava medindo 10Hz de ruído sem efeitos de amostragem), mas reduziria o ruído acima de 100Hz em cerca de um fator próximo (Mas não realmente) 10. Existem classes inteiras de um semestre que discutem o porquê, como, etc. A versão curta é esta: cada amostra é a soma do sinal que deseja e o ruído. Se você adicionar 10 amostras, você receberá 10x o sinal desejado e a soma de 10 ruídos. A natureza do ruído determina o que você obtém quando você adiciona as 10 amostras de ruído. O ruído gaussiano acrescenta uma maneira (algo como: se 83 de amostras estão abaixo de X, a soma tem 83 somas abaixo de 1.1X, ou algo assim). O ruído linear adiciona outra maneira. E os padrões de repetição adicionam outra maneira. Então, sem saber exatamente o que é o ruído, ninguém pode responder com certeza, exceto que a média de amostras múltiplas provavelmente ajuda, e quase nunca dói. Há também a questão do aliasing. Se você tem uma interferência do seno de 60Hz, em -3dB, e amostra em 10.001Ss (assume sempre que os relógios não coincidem presicamente), você obterá algo como 0.006Hz a -3dB adicionado ao seu sinal e seu filtro não o removerá . Mas colidindo sua taxa de amostragem para 100.001Ss, colocará a interferência em aproximadamente 40Hz, então seu filtro deve eliminá-la. A média de 10 amostras por vez é um tipo de filtro (caixa). Se você olhar para ele em um domínio de freqüência, você pode ver que algumas freqüências mais altas são deslocadas para frequências mais baixas de uma maneira estranha e nem todas são reduzidas. Se você estiver com média de 4000 Ss, 100 de cada vez, você terá uma média de 40 vezes por segundo. Com 60Hz de interferência, você terá cerca de 13 tanto ruído, deslocado para 20Hz, que não irá filtrar, assim como 60Hz teria. Então, seria melhor usar o filtro EWMA na taxa de amostragem mais alta. Do que a média de blocos de entradas, depois filtre isso. E a média é (provavelmente) melhor do que apenas usar uma taxa de amostragem mais lenta. Se você tem um adaptador de entrada com filtros eletrônicos incorporados, isso é ainda melhor, e não há necessidade de amostrar mais de 2X a freqüência dos filtros. Utilizador CLD desde a rev. 8.6.
No comments:
Post a Comment