Sunday 15 October 2017

Muda média downsampling


Esta questão já tem uma resposta aqui. Eu tenho 2 conjuntos de dados em Matlab que eu preciso para plotar um contra o outro - um sobre o xaxis e um sobre o yaxis Os dados para cada conjunto foi coletado usando um método diferente para que a taxa de amostragem é significativamente Diferente e até que eu não faço o mesmo número de pontos de dados em ambos os conjuntos eu não posso traçar um contra o outro. É muito simples de downsample dados em Matlab usando a função de downsample Matlab. A taxa de amostragem de A é 1 5s ea taxa de amostragem de B é 0 1s Eu tenho sido capaz de usar com êxito downsample como downsample B, 15,10 para obtê-lo para iniciar ao mesmo tempo -3s o que significa algo em meus dados, então eu preciso para começar a começar nesse ponto e estar em A taxa de amostragem da amostra de 1 5s. Now, no entanto, eu queria saber se havia um método que me permitiu ter a média dos 15 pontos, em vez de escolher um ponto a cada 15 pontos downsample a maneira que eu usei apenas pega cada 15º ponto I, no entanto, gostaria que a média dos 5 pontos para mim em vez Existe uma maneira de fazer this. I escreveu um para loop para um simples vetor menor para ver se eu poderia fazê-lo Para A 1 2 3 4 Eu gostaria de condensar os dados de modo que A tem apenas 2 entradas , De tal forma que ele médio A 1 e A 2 e, em seguida, A 3 e A 4.Este, no entanto, não funciona como eu quero, porque eu não quero que a média A 2 e A 3 Eu quero tomar a primeira 2 entradas, média deles, então as próximas 2 entradas, então média eles assim on. Can alguém help. asked Jan 8 15 em 10 42.marked como duplicado por matlab Shai Usuários com o crachá matlab pode sozinho fechar perguntas matlab como duplicatas E reabri-los conforme necessário Jan 8 15 às 15 02. Esta pergunta foi feita antes e já tem uma resposta Se essas respostas não abordar completamente a sua pergunta, por favor, faça uma nova pergunta. Ah, sim Desculpe, eu tentei procurar respostas já existentes Perguntas Eu penso que minhas palavras da busca eram diferentes ao título embora Maheen Siddiqui Jan 8 15 em 10 49.Upsampling Downsampling e Mo discreto do tempo O objetivo deste laboratório é aprofundar os alunos a compreensão dos princípios de modulação de tempo discreto, demodulação, upsampling e down sampling. Upsampling e Downsampling. In nesta parte do laboratório, você vai experimentar com cima e para baixo de amostragem por um fator de 3. Primeiro, baixe o arquivo e digite load h no prompt do Matlab Isto irá carregar uma variável h no espaço de trabalho Matlab. Startup Simulink e construir modelos de amostragem e down. Recall que down sampling requer dois blocos de processamento 1 modulação com um impulso periódico Treinar e 2 remover as amostras zero. Uma maneira fácil de modular pela seqüência é definir a seqüência no espaço de trabalho Matlab e, em seguida, trazê-lo para o modelo usando um sinal de bloco de espaço de trabalho Aqui s algum código para considerar. M 3 Factor para cima E para baixo amostragem N comprimento hp zeros N, 1 Defina um vetor de todos os zeros p 1 MN 1 Defina cada terceira amostra para um. A biblioteca de blocos de operações de sinal na biblioteca Blockset DSP contém um bloco Downsample que remove Zero samples Parece que this. Upsampling consiste em duas operações 1 inserindo zeros e 2 low-pass de filtragem para remover images. This Biblioteca de blocos de operações de sinal na biblioteca Blockset DSP contém um bloco Upsample que insere zeros Parece isso. Você já sabe Sobre a concepção de filtros passa-baixa usando a função remez Matlab. A seguir, um exemplo de modelo Simulink O ramo superior faz down sampling eo ramo inferior faz up sampling. Note Na amostragem para cima e para baixo, tenha muito cuidado para definir as taxas de amostra em cada Block Quando disponível, defina o Tempo de Amostragem nos blocos de filtro para -1 Então os filtros herdarão seus tempos de amostra do bloco anterior Caso contrário, você deve definir os tempos de amostra explicitamente. Neste modelo, alguns blocos de Signal To Workspace foram adicionados Para capturar vários sinais. Na caixa de diálogo Parâmetros de simulação, defina a hora de início como 0 eo tempo de parada para N-1, onde N é o comprimento do sinal de entrada. H Além disso, na categoria Opções do Solver, defina a T Ype para Fixed-step. Run a simulationpare os espectros e as seqüências do domínio do tempo dos três sinais h, hpd, hdown Escrever uma explicação do que você vê Fazer os dois blocos de processamento utilizados para a função de amostragem para baixo como esperado Turn tramas como as Mostrado abaixo com o seu write up. Below são os espectros e as seqüências do domínio do tempo primeiras poucas amostras apenas computadas usando o modelo Simulink abovepare os espectros e as seqüências do domínio do tempo dos três sinais h, hpu, hup Escreva uma explicação do que você vê Do Os dois blocos de processamento utilizados para a função de amostragem acima como esperado Turn tramas como os mostrados abaixo com o seu write up. Explique como você projetou o filtro passa-baixa para upsampling Quais foram as bordas da banda de transição Qual foi o ganho do filtro. Abaixo estão os espectros e as sequências do domínio do tempo primeiras amostras apenas computadas usando o modelo de Simulink acima. Como mostrado acima, a sequência de domínio de tempo amostrada passa através das amostras dos sinais originais Isto é conseguido u Cantar um ganho de 3 no filtro passa baixo Você pode ver o ganho de três no domínio da freqüência Observe que o filtro passa-baixa causará um atraso no sinal upsampled relativo ao sinal original Na figura acima, o atraso foi Removed. Discrete tempo de modulação e demodulação. Download do arquivo Qualquer computador equipado com multimídia com pacotes de software padrão deve ser capaz de reproduzir este arquivo de áudio Experimente Você reconhece o que a mulher está lendo. Você pode ler os dados wav em Matlab digitando. Isto carrega três variáveis ​​em você. O espaço de trabalho de Matlab y é o dado de áudio, fs é a taxa de amostragem 11025 neste caso e nbits é o número de bits usados ​​para representar cada amostra em y. O espectro de y é como mostrado abaixo. Pode conter conteúdo de freqüência significativo até 0 5 freqüência de tempo discreto que corresponde a 11025 freqüência de tempo contínuo de 2 Hz metade da taxa de amostragem. Criar um modelo de Simulink para modular a amplitude de y em uma portadora co-sinusoidal usando um Portador Freqüência de 0 2 freqüência de tempo discreto e, em seguida, executar desmodulação síncrona e downsampling para restaurar o espectro para a sua forma original. A fim de evitar aliasing, y deve ser upsampled antes modulando it. Recall que em tempo discreto, a restrição sobre o transportador Freqüência é. onde essas freqüências são discretas tempo f requencies em unidades de rads Se você preferir usar unidades que são consistentes com a maneira que nós geramos nossas parcelas, então dividir a desigualdade acima por um fator de 2 pi levando à seguinte restrição Na freqüência portadora. Use um fator de upsampling de 3.Qual é a maior freqüência entre -0 5 e 0 5 após upsampling por 3.Qual é a maior freqüência entre -0 5 e 0 5 no sinal modulado. Será upsampling por 3 Evitar aliasing no sinal modulado. Os dois passos em demodulação síncrona são 1 modulação multiplicar pela transportadora e 2 passa-baixa filtragem para remover os componentes de freqüência dupla Qual é a maior freqüência após o modulat Ion passo, mas antes de filtragem de baixa passagem faz aliasing ocorrer. Quais são as bordas de transição bandas eo ganho do filtro passa-baixa que você usou para demodulação. Does o som de sinal demodulado e downsampled o mesmo que o sinal original By the way, Se você quiser escrever um sinal yr para um arquivo wav a fim de escutá-lo, digite o seguinte no prompt do Matlab. Torne as respostas para as perguntas acima e figuras como as abaixo mostrando seu modelo e os espectros Um exemplo Do que os espectros se parecem em vários pontos aparece na parte inferior desta página. Um modelo de Simulink do sistema completo pode se parecer com isto. O espectro de vários dos sinais intermediários se parece com este. Copyright 2008, pelo atributo Contribuinte Cite atributo Recurso admin 2006, 28 de junho Upsampling Downsampling e Modulação de Tempo Discreto Recuperado 07 de janeiro de 2017, a partir de Materiais de Curso Online Grátis Site da USU OpenCourseWare Esta obra está licenciada sob uma licença Creative Commons. Como outros Você deve considerar um filtro de resposta de impulso infinito IIR em vez do filtro de resposta de impulso finito FIR que você está usando agora. Há mais a ele, mas à primeira vista os filtros FIR são implementados como convoluções explícitas e filtros IIR com equações. Filtro Eu uso muito em microcontroladores é um único pólo filtro passa-baixo Este é o equivalente digital de um simples filtro analógico RC Para a maioria das aplicações, estes 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 Ter encontrado são o resultado de alguém que não presta atenção na classe de processamento de sinal digital, não como resultado da necessidade de suas características particulares Se você só quer atenuar as altas freqüências que você sabe que são ruído, um filtro de passa-baixo de pólo único é melhor A melhor maneira Para implementar um digitalmente em um microcontrolador é geralmente. FILTRO - FILTRO FF NOVO - FILT. FILT é um pedaço de estado persistente Esta é a única variável persistente yo U precisa de calcular este filtro NEW é o novo valor que o filtro está sendo atualizado com esta iteração FF é a fração de filtro que ajusta o peso do filtro Olhe para este algoritmo e ver que para FF 0 o filtro é infinitamente pesado desde a saída Nunca mudanças Para FF 1, é realmente nenhum filtro em todos desde que a saída apenas segue a entrada Os valores úteis estão entre os sistemas pequenos em que você escolhe FF para ser 1 2 N para que a multiplicação por FF pode ser realizada como um deslocamento para a direita por N bits Por exemplo, FF pode ser 1 16 ea 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 um adicionar, embora os números geralmente precisam ser mais amplo do que o valor de entrada mais precisão numérica em Uma seção separada abaixo. Eu geralmente tomam 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 RC em série e atenua por 12 dB oitava acima da rolloff freqüência No entanto, para leituras AD é geralmente mais relevante para olhar para o filtro no domínio do tempo, considerando a sua resposta passo Isto diz-lhe quão rápido seu sistema vai ver uma mudança quando a coisa que você está medindo changes. To facilitar a concepção destes filtros que apenas Significa 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 ele calcula a resposta passo e outros valores Na verdade eu costumo correr isso através do meu Wrapper script PLOTFILT Isto executa FILTBITS, que faz um arquivo CSV, então 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 de FF são, portanto, 1 16 neste caso. O traço vermelho é a resposta de etapa unitária, e é a coisa principal a olhar Por exemplo, Se a entrada muda instantaneamente, a saída do filtro combinado irá resolver 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. Traço verde mostra-lhe a saída de um pico de amplitude completa única Isto dá-lhe alguma idéia da supressão de ruído aleatório Parece que nenhuma amostra única vai causar mais do que uma mudança de 2 5 na saída. O traço azul é dar uma sensação subjetiva de O que este filtro faz com o ruído branco Este não é um teste rigoroso desde que não há nenhuma garantia que exatamente o índice era dos números aleatórios escolhidos como a entrada branca do ruído para esta execução de PLOTFILT É somente dar-lhe uma sensação áspera de quanto Talvez seja 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. Precisão numérica. Eu vejo a partir dos comentários e agora uma nova resposta que há interesse em discutir o número de bits necessários para implementar este filtro Note que o multiplicar por FF irá criar Log 2 FF novos bits abaixo do ponto binário Em pequenos sistemas, FF É geralmente escolhido para ser 1 2 N para que este multiplicar é realmente realizado por um deslocamento à direita de N bits. FILT é, portanto, geralmente um ponto fixo inteiro Note que isso não muda qualquer da matemática do ponto de vista do processador s Por exemplo , Se estiver a filtrar as leituras de AD de 10 bits e N 4 FF 1 16, então você precisa de 4 bits de fração abaixo do dígito inteiro de 10 bits Leituras AD Um mais processadores, você estará fazendo operações inteiras de 16 bits devido às leituras AD de 10 bits. Caso, você ainda pode fazer exatamente as mesmas operações de 16 bits inteiros, 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 de 16 bits inteiros funciona se você os considerar Para ser 12 4 fixo p Oint ou verdadeiro 16 bits inteiros 16 0 ponto fixo. Em geral, você precisará adicionar N bits cada pólo de filtro se você don t quer adicionar ruído devido à representação numérica no exemplo acima, o segundo filtro de dois teria que ter 10 4 4 18 bits para não perder informações Na prática em uma máquina de 8 bits que significa que você usa 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, assim, O mesmo código, para todos os pólos de um filtro. Em geral, eu escrevo uma sub-rotina ou macro para executar uma operação de pólo de filtro, em seguida, aplicar isso para cada pólo Se uma sub-rotina ou macro depende se ciclos ou memória de programa são mais importantes nesse projeto específico De qualquer maneira, eu uso algum estado zero para passar NOVO na macro de sub-rotina, que atualiza FILT, mas também carrega isso no mesmo estado de arranhão NOVO estava em Isso torna mais fácil aplicar vários pólos desde o FILT atualizado de um pólo é o NOVO do Next one Quando uma sub-rotina, é útil ter um ponto apontador para FILT no caminho, que é atualizado para logo após FILT no caminho para fora Assim, a sub-rotina opera automaticamente em filtros consecutivos na memória se chamado 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 Esses exemplos são implementados como macros usando o meu pré-processador de assembler PIC, que é mais capaz do que qualquer um dos recursos de macro embutidos. Clabacchio Outra questão que eu deveria ter mencionado é a implementação de firmware Você pode escrever uma única subpasta de filtro de passagem de pólo único uma vez, em seguida, aplicá-lo várias vezes Na verdade eu costumo escrever uma sub-rotina para levar um ponteiro na memória para o estado de filtro, O ponteiro para que possa ser chamado em sucessão facilmente para realizar filtros multi-polo 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 Standard LowPass Filter, 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 do hardware que eu queria tomar uma média, a fim de ser capaz de reagir a estes Hardware Mudanças específicas automaticamente sensslen maio 21 12 em 12 06.If você pode viver com a restrição de um poder de dois número de itens para 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 Baixo desempenho micro sem divisão dedicada porque pode ser feito como um deslocamento de bit Cada turno direito é uma potência de dois eg. O OP pensou que ele tinha dois problemas, dividindo em um PIC16 e memória para seu buffer anel Esta resposta mostra que a divisão Não é difícil Reconhecidamente não aborda o 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 s Como algumas das outras respostas exigem uma operação de divisão, eles São igualmente incompletos, uma vez que eles não mostram como efetivamente conseguir isso em um PIC16 Martin Apr 20 12 at 13 01.There é 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 It s Chamado de cascata integrador-comb filtro CIC A idéia é que você tem um integrador que você tomar as diferenças de um período de tempo, ea chave dispositivo de economia de memória é que por downsampling, você don t tem que armazenar eve Ry valor do integrador Ele pode ser implementado usando o seguinte pseudocódigo. Seu comprimento médio móvel eficaz é decimationFactor statesize, mas você só precisa manter em torno de amostras statesize Obviamente, você pode obter melhor desempenho se o seu statesize e decimationFactor são poderes de 2, Divisão e restante operadores são substituídos por mudanças 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ê don t necessidade a freqüência-nulos de um filtro de vagão, um pólo Ou filtro passa-baixo de 2 pólos provavelmente funcionará bem. Por outro lado, se você estiver filtrando para fins de decimação, tendo uma entrada de alta taxa de amostragem e calculando a sua média para uso por um processo de baixa taxa, em seguida, um filtro CIC Pode ser apenas o que você está procurando, especialmente se você pode usar statesize 1 e evitar o ringbuffer completamente com apenas um valor único integrador anterior. Há alguma análise em profundidade da matemática por trás usando o primeiro ord Er IIR filtro que Olin Lathrop já descreveu mais sobre a Digital Signal Processing pilha intercâmbio inclui lotes de belas imagens A equação para este IIR filtro is. This pode ser implementado usando apenas inteiros e nenhuma divisão usando o código a seguir pode precisar de depuração como eu Estava a escrever a partir da memória. Este filtro aproxima uma média móvel das últimas amostras K, definindo o valor de alfa para 1 K 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 Vou verificar o código listado aqui, logo que eu recebo uma alteração e editar esta resposta, se needed. answered Jun 23 12 at 4 04.Here sa um filtro polar de passo único média móvel, com Freqüência de corte CutoffFrequency Muito simples, muito rápido, funciona muito bem, e quase nenhuma memória overhead. Note Todas as variáveis ​​têm escopo além da função de filtro, exceto o passado in newInput. Note Este é um filtro de estágio único Vários estágios podem ser cascata juntos para aumentar a Nitidez de O filtro Se você usar mais de uma fase, você terá que ajustar DecayFactor como se relaciona com o Cutoff-Frequency para compensar. E, obviamente, tudo o que você precisa é que as duas linhas colocadas em qualquer lugar, eles don t precisa 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. CutoffFrequency SampleRate tem um intervalo entre 0 e 0 5 DecayFactor é um valor entre 0 e 1, geralmente perto de 1. Flutuadores de precisão simples são bons o suficiente para a maioria das coisas, eu só prefiro dobros 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 é uma potência de 2 inteiros para que você possa bit-shift para a direita como o denominador, em vez de ter que dividir durante o loop de filtro para Exemplo, se 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 este, um excelente livro que Para o paradigma Mudando Média, uma abordagem diferente para definir DecayFactor e AmplitudeFactor que podem ser mais relevantes para as suas necessidades, vamos dizer que você quer o anterior, cerca de 6 itens média tog Você pode adicionar 6 itens e dividir por 6, então você pode definir o AmplitudeFactor para 1 6, e DecayFactor para 1 0 - AmplitudeFactor. answered 14 de maio 12 em 22 55.Everyone mais tem comentado completamente sobre o utilitário De IIR vs FIR, e na potência de dois divisão I d apenas 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ê manter N um poder de dois, toda a divisão É single-cycle bit-shifting. Botor FIR ring buffer manter um buffer de execução dos últimos N valores, e uma soma corrente de todos os valores no buffer Cada vez que uma nova amostra vem, subtrair o mais antigo valor no buffer de SUM , Substitua-a pela nova amostra, adicione a nova amostra à SUM e a saída SUM. O buffer de anel IIR modificado mantém uma Soma corrente dos últimos N valores Cada vez que uma nova amostra entra, SUM - SUM N, adicione a nova amostra Amostra e saída SOMA N. resposta agosto 28 13 em 13 45.Se eu estou lendo-o direito, você está descrevendo uma primeira ordem IIR filtro o valor que você está subtraindo isn t o valor mais antigo que está caindo, mas é, em vez disso, a média dos valores anteriores Filtros de primeira ordem IIR pode certamente ser útil, mas não tenho certeza o que você quer dizer quando você sugere que a saída É a mesma para todos os sinais periódicos A uma taxa de amostragem de 10KHz, alimentar 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 fica baixo Para 30 Um filtro de IIR de primeira ordem supercat Aug 28 13 at 15 31. produzirá uma onda que começa bruscamente a subir e gradualmente nivela próximo mas não ao máximo de entrada, então começa bruscamente a cair e gradualmente nivela próximo mas não na entrada Mínimo Um comportamento muito diferente supercat Aug 28 13 at 15 32.One 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 dar-lhe um Retângulo no tempo - a sinc in Freq - e você não pode gerenciar os lóbulos laterais Pode ser bem vale a pena jogar em alguns inteiros multiplica para torná-lo uma simpática simétrica sintonizável FIR se você pode poupar o relógio carrapatos Scott Seidman agosto 29 13 em 13 50. ScottSeidman Não Necessidade de multiplicações se um simplesmente tem cada estágio da FIR ou saída a média da entrada para essa fase e seu valor armazenado anterior e, em seguida, armazenar a entrada se um tiver o intervalo numérico, pode-se usar a soma em vez de média Se isso S 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 d2 dt desagradável quando a mudança de entrada, e novamente 1ms mais tarde, mas terá o mínimo possível D dt para um filtro com um atraso total de 1ms supercat Aug 29 13 at 15 25.As mikeselectricstuff disse, se você realmente precisa reduzir suas necessidades de memória, e você don t mente sua resposta ao impulso sendo um exponencial em vez de um pulso retangular, eu Iria para uma ave movendo exponencial Rage filter Eu uso-os extensivamente Com esse tipo de filtro, você não precisa de nenhum buffer Você não precisa armazenar N amostras passadas Apenas um Assim, seus requisitos de memória são cortados por um fator de N. Também, 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 muda para a direita No entanto, estamos em 2017, e eu recomendo que você use compiladores e MCUs que permitem Para trabalhar 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 a maneira como a natureza se comporta, na maioria dos casos. Uma questão 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 bias truncamento supondo que N i Uma potência de dois, e somente a aritmética inteira é usada, a direita do turno sistematicamente elimina os LSBs da nova amostra. Isso significa que quanto tempo a série poderia ser, a média nunca levará isso em consideração. Diminuindo a série 8,8,8 8,7,7,7 7,6,6 e suponha que a média é de fato 8 no início A amostra do punho 7 trará a média para 7, independentemente da intensidade do filtro Apenas para uma amostra Same História para 6, etc. Agora pense no oposto que a série vai acima A média permanecerá em 7 para sempre, até que a amostra seja grande bastante para fazê-la mudar. Naturalmente, você pode corrigir o viés adicionando 1 2 N 2, mas Que 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-1 2 N 2 Para N 4, por exemplo, qualquer amostra acima de zero manterá a média inalterada. Que implicaria para segurar um acumulador dos LSBs perdidos Mas eu didn t torná-lo longe o suficiente para ter código pronto, E eu não tenho certeza que não iria prejudicar o poder IIR em alguns outros casos de séries, 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.

No comments:

Post a Comment