Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

612
Visualizações
¿Cómo hacer la convolución circular N-Point para la señal 1D con numpy?

Quiero una función de convolución circular donde pueda establecer el número N como quiera.

Todos los ejemplos que miré aquí y aquí asumen que se requiere relleno completo, pero eso no es lo que quiero.

Quiero tener el resultado para diferentes valores de N

  • entonces la entrada sería N y y dos matrices diferentes de valores
  • la salida debe ser la señal convolucionada de punto N

Aquí está la fórmula para la convolución circular. Sub N puede verse como la operación de módulo.

ingrese la descripción de la imagen aquí

tomado de esta introducción básica


actualizacion para posible solucion

Esta respuesta es una solución adecuada cuando la matriz a se apila de acuerdo con los diferentes casos de N .

Cuando encuentre tiempo, publicaré una respuesta completa, mientras tanto, siéntase libre de hacerlo.

¡Gracias a @André por señalar esto en los comentarios!



ejemplos de entrada/salida de aquí

norte = 4

ingrese la descripción de la imagen aquí

N = 7 con relleno cero

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Creo que esto debería funcionar:

 def conv(x1, x2, N): n, m = np.ogrid[:N, :N] return (x1[:N] * x2[(n - m) % N]).sum(axis=1)

Esta es una traducción directa de la fórmula publicada en la pregunta:

ingrese la descripción de la imagen aquí

Para implementar esta fórmula, primero calculamos una matriz de índices utilizados por x₂. Esto se hace usando el código

 n, m = np.ogrid[:N, :N] indices = (n - m) % N

Por ejemplo, para N=5 , los indices de la matriz son:

 [[0 4 3 2 1] [1 0 4 3 2] [2 1 0 4 3] [3 2 1 0 4] [4 3 2 1 0]]

La entrada en la fila i-ésima y la columna j-ésima es (ij) % N . Luego, x2[indices] crea una matriz que consta de elementos de x2 correspondientes a estos índices. Resta multiplicar cada fila de este arreglo por los primeros N elementos de x1 y sacar la suma de cada fila:

 (x1[:N] * x2[indices]).sum(axis=1)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda