【问题标题】:Generating infinite array of pulses (Matlab)生成无限的脉冲阵列(Matlab)
【发布时间】:2016-05-29 03:32:53
【问题描述】:

我正在尝试在 Matlab 中生成无限的脉冲阵列(在本例中为双曲正割脉冲),如 this figure

尝试:

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

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

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

【问题讨论】:

  • 我不明白您为什么需要无限的脉冲阵列。显然,由于内存限制,MATLAB 无法为您存储无限数量的脉冲。
  • 是的,这是真的。但是有没有办法模拟这种情况?因为我的帖子中的图是在 Matlab 中生成的,所以文本说它显示了无限的脉冲阵列(仅显示了 7 个)。然后在频域中,这个无限脉冲序列的频谱将包含尖锐的尖峰(狄拉克三角函数),这正是理论上的预期。
  • 如果你想绘制它们,那么你可以独立绘制它们。

标签: matlab plot fft matlab-figure


【解决方案1】:

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

对于频谱,您有几个选择。一是分析推导。在这种情况下,您将定义一个函数F(w),它返回频率“w”处的频谱值。您可以类似地将其视为无限并以相同的方式绘制它。

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

【讨论】:

  • 没错。我还被告知,如果时间轴是两个连续脉冲之间时间间隔的整数倍(即重复率T),那么 DFT 的周期性边界条件将确保脉冲序列确实是无限的,即使你有有限数量的脉冲。所以我定义了我的t=[-N*T : dt : N*T],但我没有像图片中那样得到尖锐的狄拉克尖峰。当我使用不是 T 倍数的跨度时,我再次得到相同的绘图形状。这是为什么呢?
  • @Merin 它看起来像什么?
  • this picture 中,第一组用于 1 个脉冲,第二组用于脉冲对,最后一组用于无限阵列。当我制作情节时,光谱看起来像第二组。我没有得到像上一张图​​片那样尖锐的狄拉克尖峰。
  • @Merin 尝试两件事。 1) 许多脉冲(例如几百个)。 2)单脉冲对,但要谨慎选择时间点。将其设置为,如果您要连接多个短信号副本,它将是一个有效的脉冲序列。
猜你喜欢
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 2015-08-03
相关资源
最近更新 更多