信号序列的基本操作–添加

重点关注:如何在两个离散时间信号序列上实现基本的加法运算。提供了用于信号添加的Python代码。

信号添加

给定两个离散时间序列\(x1[n])和(x2[n]\),这两个序列的加法表示为(x1[n]+x2[n])。对于这两个序列,在\(n=0\)处的样本开始可以不同。

例如,如果

\[\begin{align}x_1[n]&=\left\{-3,12,-4,\underset{\uparrow}{9},2,15\right\}\\x_2[n]&=\left \{-6,\underset{\uparrow}{4},-2,10\right\}\end{alinge}\]

在这些序列中,样本在\(n=0)处的位置不同。此外,这些序列的长度也不同。

加法操作应考虑这些差异。以下python代码在计算加法操作之前针对这些差异进行了调整。它创建了两个序列长度相等,跨越.序列首先用零填充,然后是序列&被复制到&在相应位置。最终结果计算为.

将numpy导入为np定义信号添加(x1,n1,x2,n2):'''计算y(n)=x1(n)+x2(n---------------------------------[y,n]=信号添加(x1,n1,x2,n2)参数----------n1=第一序列索引x1n2=第二序列指数x2x1=为索引n1定义的第一个序列x2=为指数n2定义的第二个序列退货-------y=在索引n上定义的输出序列涵盖n1和n2的整个范围'''n开始=分钟(分钟(n1),分钟(n2))n_end=最大(最大(n1),最大(n2))n=np.arange(n_start,n_end+1)#y(n)的持续时间y1=np.zeros_like(n,dtype='complex_')y2=np.zeros_like(n,dtype='complex_')掩码1=(n>=n1[0])&(n<=n1[-1])掩码2=(n>=n2[0])&(n<=n2[-1])y1[np.其中(掩码1)[0]]=x1[np.此处(n1==n[mask1])]y2[np.其中(掩码2)[0]]=x2[np.此处(n2==n[mask2])]y=y1+y2返回y,n

下面的代码段使用上面的函数计算两个序列\(x_1[n]\)和\(x_2[n])的加法,定义如下

\[\begin{align}x_1[n]&=cos\left(0.03\pi n\right),&0\leq n\leq 50\\x_2[n]&=e^{0.06 n},&-30\leq 0\leqn\end{alinge}
n1=净现值(0,50)n2=np.arange(-30,10)x1=np.cos(0.03*np.pi*n1)x2=净膨胀(0.06*n2)[y,n]=信号添加(x1,n1,x2,n2)

使用下面的代码绘制这些离散序列(图1)。

将matplotlib.pyplot作为plt导入f、 (ax1,ax2,ax3)=plt.子地块(3,1,sharex=True,sharey=True)ax1.茎(n1,x1,'k',标签='$x_1[n]$')ax2.stem(n2,x2,‘b’,标签=‘$x_2[n]$’)ax3.stem(n,y,'r',label='$y[n]=x_1[n]+x_2[n]$)ax1.legend(loc=“右上角”)ax2.legend(loc=“右上角”)ax3.legend(loc=“右上角”)ax1.设置极限((最小(n),最大(n)+1))ax1.set_title(“添加信号”)展示()
在信号和系统中添加离散信号。信号添加
图1:离散信号的添加

发表您的宝贵意见!!!