射频和无线供应商和资源的家

一站式满足您的射频和无线需求

卷积python代码| numpy卷积,np卷积

本页包括卷积python代码.它涵盖了numpy卷积使用np卷积python函数和卷积使用蛮力方法之间的比较。

简介:两个向量序列的卷积可以实现为两个矩阵的乘法。它用于OFDM/OFDMA波形等时域传输序列的信道损伤仿真。对于LTI(线性时不变)系统,信道脉冲响应(h[n])和输入序列(x[n])可以卷积得到输出序列(y[n])。

➨h[n]*x[n]的卷积可表示为:


两个序列的卷积

Convolution Python脚本

下面的python脚本可以使用两种不同的方法来模拟卷积函数,即numpy和np。卷积函数和蛮力法。在python脚本开始时,开发人员必须根据实数或复数卷积的需要更改输入向量。


将numpy导入为np
进口matplotlib。Pyplot作为PLT

#输入为复数
#x = np.random.normal(size=3) + 1j * np.random.normal(size=3) #普通随机复向量
#h = np.random.normal(size=4) + 1j * np.random.normal(size=4) #普通随机复向量

#输入为实数
x = [20,31,56] # OFDM发射机中的时域序列
h =[10,2,5,8] #时域通道脉冲响应

L = len(x) + len(h) - 1 #卷积输出长度

#方法1:NumPy模块中的Python卷积函数
Y3 = np。卷积(h, x)
打印(“y3 = ", y3)

#方法2:使用蛮力方法进行卷积
N = len(x)
M = len(h)
y = np.zeros(L) #用零填充的数组
对于np.arange(0,N)中的i:
对于np.arange(0,M)中的j:
Y [i + j] = Y [i + j] + x[i] * h[j]
打印(“y = y)

# NumPy模块和蛮力方法的区别
Y2 = y-y3

使用行数和列数初始化subplot函数
图,轴= plt。次要情节(2,2)
#用于内置卷积
轴(0,0).plot (y3)
轴(0,0)。set_title("方法# 1:np.convolve")
为我们自己的函数
轴[0,1].plot (y)
轴[0,1]。set_title("方法# 2:暴力方法")
#两者的区别
轴(1,0).plot (y2)
轴(1,0)。set_title("两种方法的区别")
plt.show ()

实数的输入

下面是实数卷积的输入向量。

x = [20,31,56] # OFDM发射机中的时域序列
h =[10,2,5,8] #时域通道脉冲响应

输出卷积的python实数代码

实数的卷积

复杂随机数的输入

以下是用于复数的卷积python代码的输入向量。

#x = np.random.normal(size=3) + 1j * np.random.normal(size=3) #普通随机复向量
#h = np.random.normal(size=4) + 1j * np.random.normal(size=4) #普通随机复向量

复数卷积的输出

复数的卷积

在这个python代码片段中,我们已经看到了内置numpy卷积函数,即np卷积和使用蛮力方法的实数和复数卷积之间的比较。

Python中其他有用的DSP代码

MATLAB代码的有用链接

射频和无线教程


翻译本页
Baidu