Como trabalhar e verificar integral de convolução e soma problemas

Dominando integrais de convolução e montantes vem através da prática. Aqui estão soluções detalhadas analíticos para problemas uma convolução integral e dois soma de convolução, cada um seguido por verificações numéricas detalhadas, usando Pylab do shell interativo IPython (a versão QT em particular).

convolução de tempo contínuo

Aqui está uma convolução exemplo integrante empregando sinais de extensão semi-infinitos. Considere a convolução de X(t) = você(t) (Uma função de passo da unidade) e

(Uma verdadeira decaimento exponencial a partir de t = 0). A figura proporciona um diagrama das formas de onda.

Video: Convolução -- Exemplo I

[Ilustração por Mark Wickert, PhD]

O intervalo de suporte de saída é

Você precisa de dois casos (passos) para formar a solução analítica válidos durante todo o eixo do tempo.

Video: Convolução, Exemplo 1

  • Caso 1: Usando a Figura b, você pode ver claramente que, para t lt; 0, segue-se que y(t) = 0.

  • Caso 2: Novamente olhando Figura b, você vê que para t ≥ 0, alguma sobreposição sempre ocorre entre os dois sinais do integrando. A saída integrante convolução é

Colocar as duas peças juntas, a solução analítica para y(t) é

Para verificar esta solução analítica, siga os mesmos passos utilizados no exemplo anterior:

  1. Escrever uma função Python simples para traçar a solução analítica:

    Video: Desmistificando a convolução (Convolution demystified)

    Dentro [133]: Def expo_conv (t, A, alfa): ...: y = zeros (len (t)) ...: para k, tk em enumerar (t): ...: se tk gt; = 0: ...: Y [k] = a / alfa * (1 - exp (-alfa * tk)) ...: y retorno
  2. Para a convolução numérica, o uso ssd.conv_integral (). Primeiro você escrever código Python na janela de comando para gerar os sinais X(t) e h(t) E, em seguida, realizar a convolução:

    Dentro [135]: T = arange (-4,14, 0,01) Em [136]: Xc2 = ssd.step (t) Em [137]: = HC2 ssd.step (t) * exp (-1 * t) Em [138]: Yc2_num, tyc2 = ssd.conv_integral (xc2, t, HC2, t, ( `r`, `r`)) Suporte de saída: (-8,00, 5,99) Em [143]: Subtrama (211) [144]: Lote (t, expo_conv (t, 1,1)) Em [149]: Subtrama (212) [151]: Lote (tyc2, yc2_num) Em [156]: Savefig ( `c2_outputs.pdf`)

    Observe que o quinto argumento da conv_integral função é ( ‘R’,’r’). Para sinais com extensão infinita à direita, cada ‘R’ conta a função que ambos os sinais estão certos; lados e para retornar apenas o intervalo de suporte válido sob essa hipótese.

    Os valores padrão de ( ‘F’,’f’) significa apoio finito para ambos os sinais ao longo dos eixos de tempo de entrada t1 e t2 dada para a função.

    [Ilustração por Mark Wickert, PhD]

Mais uma vez, o acordo é excelente, então a solução analítica é verificada.

Verifique convolução de tempo discreto

Para o caso de convolução de tempo discreto, aqui estão dois exemplos soma de convolução. O primeiro emprega sequências medida finitos (sinais) e o segundo emprega sinais de medida semi-infinitos. Você encontra dois tipos de seqüências em resolução de problemas, mas as sequências Extensão Finita são o ponto de partida de costume quando você está trabalhando em primeiro lugar com a soma de convolução.

Duas sequências de comprimento finito

Considere a soma de convolução de duas sequências X[n] e h[n], Mostrado aqui, junto com a configuração soma de convolução.

[Ilustração por Mark Wickert, PhD]

Quando convolving seqüências de duração finita, você pode fazer a solução analítica quase por inspeção ou talvez usando uma tabela (mesmo uma planilha) para organizar os valores de seqüência para cada valor de N, que produz uma sobreposição diferente de zero entre h[k] e X[n - k].



O intervalo de suporte para a saída segue a regra dada para o domínio de tempo contínuo. A saída y[n] Começa na soma dos dois pontos de sequência a partir de entrada e termina na soma de sequência de entrada que termina pontos. Para o problema na mão o que corresponde a y[n] A partir de [0 + -1] = -1 e terminando no [3 + 1] = 4.

Observe a figura b, você pode ver que quanto n aumenta de n lt; -1, primeiro sobreposição ocorre quando n = -1. O último ponto de sobreposição ocorre quando n - 3 = 1 ou n = 4. Você pode configurar uma tabela de planilha para avaliar os produtos soma-de-seis relacionados com o intervalo de suporte de saída.

[Ilustração por Mark Wickert, PhD]

Para verificar estas folhas de cálculo) (valores de cálculo lado, o uso em funções Python ssd.py para executar a soma de convolução. A função de soma de convolução é y, ny = ssd.conv_sum (x1, NX1, X2, nx2, medida = ( ‘F’, ‘f’)).

Dentro [208]: N = arange (-4,6) Em [209]: Xd1 = 2 * ssd.drect (n, 4) [210]: HD1 = 1,5 * ssd.dimpulse (n) - 0,5 * ssd.drect (n + 1,3) Em [211]: Yd1_num, ND1 = ssd.conv_sum (xd1, n, HD1, n) Suporte de saída: (-8, 10) Em [212]: Haste (ND1, yd1_num)

Veja a seqüência de saída resultados numéricos plotados.

[Ilustração por Mark Wickert, PhD]

Os resultados do cálculo numérico de facto correspondem ao cálculo da mão.

Uma finito e uma sequência de semi-infinita

Como um segundo exemplo de trabalhar com a convolução considerar uma sequência de impulsos de duração finita doisM + 1 pontos convolvido com a sequência exponencial semi-infinito uman você[n] (Uma verdadeira decaimento exponencial a partir de n = 0). A trama das formas de onda é dada aqui.

[Ilustração por Mark Wickert, PhD]

Com a ajuda da Figura b, você tem três casos a considerar na avaliação da convolução para todos os valores de n. O intervalo de suporte para a convolução é

Aqui estão os passos para cada caso:

  • Caso 1: A partir da Figura b, você vê que para n + M lt; 0 ou n lt; -M não há sobreposição entre as duas sequências da soma, então y[n] = 0.

  • Caso 2: sobreposição parcial entre as duas sequências quando ocorre n + M ≥ 0 e n - M ≤ 0 ou -MnM. Os limites soma começar em k = 0 e na extremidade k = n + M. Usando a fórmula da soma série geométrica finita, a soma de convolução para avalia

  • Caso 3: sobreposição completa ocorre quando n - M gt; 0 ou n gt; M. Os limites de soma sob este caso executados a partir de k = n - M para k = n + M. Mais uma vez, utilizando a fórmula de soma série geométrica finita, a soma de convolução para avalia

    Video: Integral de Convolução aplicada a um Circuito de Primeira Ordem

Juntando as peças, a solução analítica completa para este problema é

Para comparar a solução analítica com a solução numérica, você segue os passos de traçar a função analítica contra uma parcela da soma de convolução real:

  1. Escrever uma função Python para avaliar y[n] Como uma função seccionalmente:

    Dentro [239]: Def expo_pulse_conv (N, A, M): ...: y = zeros (len (n)) ...: para k, NK em enumerar (n): ...: se nk gt; = -M e nk lt; = H: ...: Y [k] = 2 * (1 - a ** (NK + M + 1)) / (1 - a) ...: nk elif gt; H: ...: Y [k] = 2 * (a ** (NK-H) - a ** (NK + M + 1)) / (1 - a) ...: y retorno
  2. Encontre a soma de convolução real usando a função conv_sum () e, em seguida, tramar os resultados:

    Dentro [255]: N = arange (-5,30) # N valores de x [n] & h [n] Em [256]: Xd2 = 2 * ssd.drect (n + 4,9) # criar x [n] em [257]: HD2 = ssd.dstep (n) * 0,6 ** # n criam h [n] em [258]: Yd2_num, ND2 = ssd.conv_sum (xd2, n, HD2, N, ( `F`, `r`)) Suporte de saída: (-10, 24) Em [259]: Subtrama (211) [260]: Haste (n, expo_pulse_conv (n, 0.6,4)) # analyticalIn [265]: Subtrama (212) [266]: Haste (ND2, yd2_num) # numericalIn [271]: Savefig ( `d2_outputs.pdf`)

    Use o quinto argumento para o conv_sum () funcionar para indicar o âmbito da segunda sequência de entrada para a direita; faces ( ‘R’), ao contrário do valor padrão de finita ( ‘F’). Essa configuração garante que a função não retorna resultados inválidos.

    [Ilustração por Mark Wickert, PhD]

Aqui, você vê que a solução analítica por partes compara favoravelmente com o cálculo numérico soma de convolução direta.


Publicações relacionadas