循环卷积python代码,, 最近舍友要写一份与


最近舍友要写一份与循环卷积有关的报告,但是发现网上的都是matlab的循环卷积的代码,没有找到python的循环卷积代码,于是我就直接根据原理帮舍友用python实现了这个。

用的序列是x1=[1,2,3,4],x2=[1,1,1,1,0,0,0,0],以下是x1和x2的循环卷积的结果图。

技术图片

话不多说,放代码了!

 1 # -*- coding:utf-8 -*- 2 import numpy as np 3 import matplotlib.pyplot as plt 4 #x1=[6,5,6,3,5,7,0,1] 5 #x2=[7,1,2,9,4,3,20,1,2,3,5] 6 x1=[1,2,3,4] 7 x2=[1,1,1,1,0,0,0,0] 8  9 #确定循环卷积序列的长度N10 N=max(len(x1),len(x2))11 12 #补013 if len(x1)>len(x2):14     for i in range(len(x2),len(x1)):15         x2.append(0)16 else:17     for i in range(len(x1),len(x2)):18         x1.append(0)19 20 #序列x1周期延拓,以y轴为对称轴对称变换,截取0~N-1的序列21 temp_x1=[]22 temp_x1.append(x1[0])23 for i in range(1,len(x1)):24     temp_x1.append(x1[N-i])25 print(temp_x1)26 27 #针对变化后的x1进行0~N-1的循环移动,获得一个N*N的cycle_matrix矩阵28 x1=temp_x129 cycle_matrix=[]30 cycle_matrix.append(x1)31 for step in range(1,N):32     temp=[]33     for i in range(0,N):34         temp.append(0)35     for i in range(0,N):36         temp[(i+step)%N]=x1[i]37     cycle_matrix.append(temp)38 print(cycle_matrix)39 40 #矩阵相乘,获得循环卷积结果序列result41 cycle_matrix=np.array(cycle_matrix)42 x2=np.array(x2)43 result=np.matmul(cycle_matrix,np.transpose(x2))44 result=list(result)45 nnum=[]46 for i in range(0,N):47     nnum.append(i)48 print(result,nnum)49 50 #画图51 plt.bar (nnum,result,width=0.04,color =‘r‘)52 plt.xlabel (‘n‘)53 plt.ylabel (‘y‘)54 plt.title (‘result‘)55 plt.show ()

循环卷积python代码

评论关闭