如何将Python生成的中心在x=4的矩形信号移至x=0?
调整矩形信号中心到x=0的思路和代码修改
问题分析
你的代码生成的矩形信号默认用数组索引作为x轴(从0开始),导致中心偏移到x=4附近。要将中心移到x=0,核心是重新定义对称的x轴坐标,同时修正原函数中可能存在的长度不匹配问题。
具体调整步骤
修正矩形信号生成函数:
原代码中int((n-T)/2)会在n-T为奇数时截断数值,导致生成的数组总长度不等于n。改用np.pad可以精准控制左右填充的0的数量,保证总长度严格为n。生成以0为中心的x轴坐标:
对于长度为n的信号,若n是奇数,生成从-n//2到n//2的整数序列作为x轴;若n是偶数,生成从-(n//2)+1到n//2的序列,确保信号中心对齐x=0。
修改后的完整代码
import numpy as np import matplotlib.pyplot as plt def rect(n, T): # 计算左右填充的0的数量,保证总长度为n left_pad = (n - T) // 2 right_pad = n - T - left_pad # 用pad生成对称的矩形信号 return np.pad(np.ones(T), (left_pad, right_pad), mode='constant') # 生成信号 n = 11 T = 6 rect_signal = rect(n, T) # 生成以0为中心的x轴坐标 x_axis = np.arange(-(n//2), n//2 + 1) # 绘制图形 plt.step(x_axis, rect_signal, 'r') plt.xlabel('x') plt.ylabel('幅值') plt.grid(True) plt.show()
效果说明
修改后,长度为11的信号的x轴范围是-5到5,中间6个1的位置对应-2到3(11-6=5,左边填充2个0,右边填充3个0),中心刚好对齐x=0;如果n和T都是偶数,信号会完全对称分布在x=0两侧。
内容的提问来源于stack exchange,提问作者kidox
相关产品推荐
相关产品推荐

