Thursday 16 November 2017

Matriz De Matriz Móvel Móvel


Estou procurando um pouco de orientação sobre como usar CONVN para calcular médias móveis em uma dimensão em uma matriz 3d. Estou ficando um pouco preso no lançamento do kernel sob o capô e estou esperando alguém pode ser capaz de esclarecer o comportamento para mim. Um post semelhante que ainda me tem um pouco confuso está aqui: Tenho diariamente rio e dados de fluxo de tempo para uma bacia hidrográfica em diferentes locais de origem. Assim, a matriz é assim, dim 1 (as linhas) representam cada site dim 2 (as colunas) representam a data dim 3 (as páginas) representam o tipo diferente de medição (altura do rio, fluxo, precipitação, etc.) É tentar usar CONVN para ter uma média móvel de 21 dias em cada local, para cada ponto de observação para cada variável. Como eu entendo, eu deveria ser capaz de usar um kernel como: Eu tentei brincar e criou outro kernel que também deve funcionar (eu acho) e definir ker2 como: Os resultados não coincidem e eu estou me perguntando se eu tenho o Dimensões incorretas aqui para o kernel. Qualquer orientação é muito apreciada. BTW, você tem um kernel simétrico, e assim lançando não deve ter nenhum efeito sobre a saída de convolução. O que você especificou é um kernel padrão de média móvel, e assim a convolução deve funcionar para encontrar a média móvel como você espera. Mas I39m um pouco confuso porque você disse que o doesn39t acima trabalho ndash rayryeng 31 de maio 15 at 20:17 Isso é completamente até você :). A pergunta que você tem é válida (sem trocadilhos) que as viagens de um monte de gente. Se você quer que ele fique, eu posso escrever uma resposta que resume o que nós falamos. Se você quiser retrair apagar a sua resposta, que não há nenhum problema em tudo. Deixe-me saber o que você quer fazer ndash rayryeng Julgamento a partir do contexto de sua pergunta, você tem uma matriz 3D e você quer encontrar a média móvel de cada linha de forma independente em todas as fatias 3D. O código acima deve funcionar (o primeiro caso). No entanto, o sinalizador válido retorna uma matriz cujo tamanho é válido em termos dos limites da convolução. Dê uma olhada no primeiro ponto do post que você ligou para mais detalhes. Especificamente, as primeiras 21 entradas para cada linha ficarão em falta devido ao sinalizador válido. Seu somente quando você começa à 22nd entrada de cada fileira faz o kernel da convolução fique completamente contido dentro de uma fileira da matriz e seu desse ponto onde você obtem resultados válidos (nenhuma chalaça pretendida). Se você gostaria de ver essas entradas nos limites, então você precisará usar o mesmo sinalizador se você quiser manter a mesma matriz de tamanho como a entrada ou o sinalizador completo (que é padrão), que lhe dá o tamanho da saída a partir de As bordas externas mais extremas, mas tenha em mente que a média móvel será feito com um monte de zeros e assim as primeiras 21 entradas wouldnt ser o que você espera de qualquer maneira. No entanto, se eu estou interpretando o que você está pedindo, então a bandeira válida é o que você quer, mas tenha em mente que você terá 21 entradas ausentes para acomodar os casos de borda. Tudo somado, seu código deve funcionar, mas tenha cuidado em como você interpreta os resultados. BTW, você tem um kernel simétrico, e assim lançando não deve ter nenhum efeito sobre a saída de convolução. O que você especificou é um kernel padrão de média móvel e, portanto, convolução deve trabalhar em encontrar a média móvel como você espera. Usando MATLAB, como posso encontrar a média móvel de 3 dias de uma coluna específica de uma matriz e acrescentar a média móvel Para essa matriz estou tentando calcular a média móvel de 3 dias de baixo para cima da matriz. Eu forneci o meu código: Dada a seguinte matriz a e máscara: Tentei implementar o comando conv, mas estou recebendo um erro. Aqui está o comando conv que eu tenho tentado usar na segunda coluna da matriz a: A saída que desejo é dada na seguinte matriz: Se você tiver alguma sugestão, eu gostaria muito. Obrigado Para a coluna 2 da matriz a, estou computando a média móvel de 3 dias da seguinte maneira e colocando o resultado na coluna 4 da matriz a (I renomeado como a matriz 39 como 39desiredOutput39 apenas para ilustração). A média de 3 dias de 17, 14, 11 é 14 a média de 3 dias de 14, 11, 8 é 11 a média de 3 dias de 11, 8, 5 é 8 ea média de 3 dias de 8, 5, 2 é 5. Não há nenhum valor nas 2 linhas inferiores para a 4a coluna porque a computação para a média móvel de 3 dias começa na parte inferior. A saída 39valid39 não será mostrada até pelo menos 17, 14 e 11. Espero que isso faz sentido ndash Aaron Jun 12 13 em 1:28 Em geral, seria útil se você mostrar o erro. Neste caso você está fazendo duas coisas erradas: Primeiro, sua convolução precisa ser dividida por três (ou o comprimento da média móvel) Segundo, observe o tamanho de c. Você não pode apenas caber c em um. A maneira típica de obter uma média móvel seria usar o mesmo: mas isso não se parece com o que você quer. Em vez disso, você é forçado a usar um par de linhas: 29 de setembro de 2013 Movendo a média por convolução O que é média móvel e para que é bom Como a média móvel é feita usando a convolução A média móvel é normalmente uma operação usada para suprimir o ruído de um Sinal: ajustamos o valor de cada ponto à média dos valores em sua vizinhança. Por uma fórmula: Aqui x é a entrada ey é o sinal de saída, enquanto o tamanho da janela é w, suposto ser ímpar. A fórmula acima descreve uma operação simétrica: as amostras são tomadas de ambos os lados do ponto real. Abaixo está um exemplo da vida real. O ponto em que a janela é colocada realmente é vermelho. Valores fora de x são supostos ser zeros: Para brincar e ver os efeitos da média móvel, dê uma olhada nesta demonstração interativa. Como fazê-lo por convolução Como você pode ter reconhecido, o cálculo da média móvel simples é semelhante à convolução: em ambos os casos, uma janela é deslizada ao longo do sinal e os elementos na janela são resumidos. Então, dar-lhe uma tentativa de fazer a mesma coisa usando convolução. Use os seguintes parâmetros: A saída desejada é: Como primeira aproximação, vamos tentar o que obtemos ao converter o sinal x pelo k kernel seguinte: A saída é exatamente três vezes maior do que o esperado. Também pode ser visto que os valores de saída são o resumo dos três elementos na janela. É porque durante a convolução a janela é deslizada ao longo, todos os elementos nele são multiplicados por um e, em seguida, resumido: yk 1 cdot x 1 cdot x 1 cdot x Para obter os valores desejados de y. A saída deve ser dividida por 3: Por uma fórmula incluindo a divisão: Mas não seria ótimo para fazer a divisão durante convolução Aqui vem a idéia, reorganizando a equação: Então vamos usar o k kernel seguinte: Desta forma, vamos Obter a saída desejada: Em geral: se queremos fazer a média móvel por convolução tendo um tamanho de janela de w. Vamos usar o seguinte k kernel: Uma função simples que faz a média móvel é: Um exemplo de uso é: A saída da documentação tsmovavg (tsobj, s, lag) retorna a média móvel simples para o objeto da série de tempo financeiro, tsobj. Lag indica o número de pontos de dados anteriores usados ​​com o ponto de dados atual ao calcular a média móvel. A saída tsmovavg (vetor, s, lag, dim) retorna a média móvel simples para um vetor. Lag indica o número de pontos de dados anteriores usados ​​com o ponto de dados atual ao calcular a média móvel. A saída tsmovavg (tsobj, e, timeperiod) retorna a média móvel ponderada exponencial para a série de tempo financeiro objeto, tsobj. A média móvel exponencial é uma média móvel ponderada, em que timeperiod especifica o período de tempo. As médias móveis exponenciais reduzem o desfasamento aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pondera o preço mais recente em 18,18. Percentual Exponencial 2 (TIMEPER 1) ou 2 (WINDOWSIZE 1). Saída tsmovavg (vetor, e, timeperiod, dim) retorna a média móvel ponderada exponencial para um vetor. A média móvel exponencial é uma média móvel ponderada, em que timeperiod especifica o período de tempo. As médias móveis exponenciais reduzem o desfasamento aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pondera o preço mais recente em 18,18. (2 (intervalo de tempo 1)). A saída tsmovavg (tsobj, t, numperiod) retorna a média móvel triangular para a série de tempo financeiro objeto, tsobj. A média móvel triangular alisa os dados. Tsmovavg calcula a primeira média móvel simples com largura de janela de ceil (numperiod 1) 2. Em seguida, calcula uma segunda média móvel simples na primeira média móvel com o mesmo tamanho de janela. A saída tsmovavg (vetor, t, numperiod, dim) retorna a média móvel triangular para um vetor. A média móvel triangular alisa os dados. Tsmovavg calcula a primeira média móvel simples com largura de janela de ceil (numperiod 1) 2. Em seguida, calcula uma segunda média móvel simples na primeira média móvel com o mesmo tamanho de janela. A saída tsmovavg (tsobj, w, weights) retorna a média móvel ponderada para o objeto da série temporal financeira, tsobj. Fornecendo pesos para cada elemento na janela em movimento. O comprimento do vetor de peso determina o tamanho da janela. Se fatores de peso maiores forem usados ​​para preços mais recentes e fatores menores para preços anteriores, a tendência é mais responsiva a mudanças recentes. A saída tsmovavg (vetor, w, pesos, dim) retorna a média móvel ponderada para o vetor fornecendo pesos para cada elemento na janela em movimento. O comprimento do vetor de peso determina o tamanho da janela. Se fatores de peso maiores forem usados ​​para preços mais recentes e fatores menores para preços anteriores, a tendência é mais responsiva a mudanças recentes. A saída tsmovavg (tsobj, m, numperiod) retorna a média móvel modificada para o objeto da série de tempo financeiro, tsobj. A média móvel modificada é semelhante à média móvel simples. Considere o argumento numperiod como a defasagem da média móvel simples. A primeira média móvel modificada é calculada como uma média móvel simples. Valores subseqüentes são calculados adicionando o novo preço e subtraindo a última média da soma resultante. A saída tsmovavg (vetor, m, numperiod, dim) retorna a média móvel modificada para o vetor. A média móvel modificada é semelhante à média móvel simples. Considere o argumento numperiod como a defasagem da média móvel simples. A primeira média móvel modificada é calculada como uma média móvel simples. Valores subseqüentes são calculados adicionando o novo preço e subtraindo a última média da soma resultante. Dim 8212 dimensão para operar ao longo de inteiro positivo com valor 1 ou 2 Dimensão para operar junto, especificado como um inteiro positivo com um valor de 1 ou 2. dim é um argumento de entrada opcional e se não for incluído como uma entrada, o padrão Valor 2 é assumido. O padrão de dim 2 indica uma matriz orientada a linhas, onde cada linha é uma variável e cada coluna é uma observação. Se dim 1. a entrada é assumida como sendo um vetor de coluna ou uma matriz orientada a coluna, onde cada coluna é uma variável e cada linha uma observação. E 8212 Indicador para vetor de caracteres de média móvel exponencial A média móvel exponencial é uma média móvel ponderada, em que o tempo é o período de tempo da média móvel exponencial. As médias móveis exponenciais reduzem o desfasamento aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pondera o preço mais recente em 18,18. Porcentagem exponencial 2 (TIMEPER 1) ou 2 (WINDOWSIZE 1) período de tempo 8212 Comprimento do período de tempo inteiro não negativo Selecionar país

No comments:

Post a Comment