Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

607
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!