我试图在Matlab中生成一个无限的脉冲阵列(在这种情况下是双曲线割线脉冲),如同this figure。
尝试:
所以,我想绘制时域中的实际脉冲序列,以及傅里叶域中的频谱(使用fft
)。当我定义时间轴和频率轴时:
t = [-tspan : dt : tspan];
w = [-1/dt : 1/tspan : 1/dt]
如果我用inf
替换时间网格的范围,我将超过最大变量数并获得错误。那么,我怎样才能生成这个无限数组
给定函数的脉冲数(比如u(t)=sech(t/a)
)?
答案 0 :(得分:0)
通过在每个时间点存储振幅,您无法明确表示无限脉冲组,因为这需要无限的内存。相反,您可以定义一个函数f(t)
,它在时间点t
返回脉冲序列的幅度。您可以将f
视为隐式定义无限脉冲序列。要绘制它,只需选择时间限制并在这些范围内的某些点评估f(t)
。
对于频谱,您有几种选择。一个是分析得出它。在这种情况下,您将定义一个函数F(w)
,它返回频率为'w'的频谱值。您可以将此视为无限,并以相同的方式绘制它。
另一种选择是以数字方式计算频谱。在这种情况下,您将生成f(t)
的样本。确保您的采样率高于奈奎斯特频率。然后,使用一些函数来计算采样信号的频谱。通常,这是近似值,因为您的采样信号只能有限长度。随着长度变短,近似变得不太准确。此外,频谱中可能存在表示采样信号开始/结束处的不连续性但不反映“真实”信号的伪像。有两种通用方法可以缓解这些问题:1)使用长采样信号(但显然它不能无限长)。 2)使用窗口功能,减少边缘效应。对于像您这样的周期性信号,采样区域应跨越整数个周期。