Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

605
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda