生成无限脉冲阵列(Matlab)

时间:2016-05-29 03:32:53

标签: matlab plot fft matlab-figure

  

我试图在Matlab中生成一个无限的脉冲阵列(在这种情况下是双曲线割线脉冲),如同this figure

尝试:

所以,我想绘制时域中的实际脉冲序列,以及傅里叶域中的频谱(使用fft)。当我定义时间轴和频率轴时:

t = [-tspan : dt : tspan];
w = [-1/dt : 1/tspan : 1/dt]

如果我用inf替换时间网格的范围,我将超过最大变量数并获得错误。那么,我怎样才能生成这个无限数组 给定函数的脉冲数(比如u(t)=sech(t/a))?

1 个答案:

答案 0 :(得分:0)

通过在每个时间点存储振幅,您无法明确表示无限脉冲组,因为这需要无限的内存。相反,您可以定义一个函数f(t),它在时间点t返回脉冲序列的幅度。您可以将f视为隐式定义无限脉冲序列。要绘制它,只需选择时间限制并在这些范围内的某些点评估f(t)

对于频谱,您有几种选择。一个是分析得出它。在这种情况下,您将定义一个函数F(w),它返回频率为'w'的频谱值。您可以将此视为无限,并以相同的方式绘制它。

另一种选择是以数字方式计算频谱。在这种情况下,您将生成f(t)的样本。确保您的采样率高于奈奎斯特频率。然后,使用一些函数来计算采样信号的频谱。通常,这是近似值,因为您的采样信号只能有限长度。随着长度变短,近似变得不太准确。此外,频谱中可能存在表示采样信号开始/结束处的不连续性但不反映“真实”信号的伪像。有两种通用方法可以缓解这些问题:1)使用长采样信号(但显然它不能无限长)。 2)使用窗口功能,减少边缘效应。对于像您这样的周期性信号,采样区域应跨越整数个周期。