Javatpoint标志
Javatpoint标志

Python周期图

介绍

  • 信号的功率谱密度(PSD)描述了它的功率是如何在不同频率上分配的。它在许多技术学科中都有信号处理应用。
  • PSD用于评估无线电和雷达等通信系统中的信道占用率和相关频率。PSD被广泛应用于频谱分析,以估计信号强度在一个频率范围内的分布。

周期图

  • 周期图是一种用于离散时间信号的PSD。在本节中,我们将重点关注周期图,这在数字系统的信号处理中很常见。
  • 简要介绍了PSD和周期图的定义。然后,我们将查看如何使用重要的信号处理库scipy和matplotlib在Python中计算PSD。

功率谱密度

我们直接进入离散时间信号,跳过整个自上而下的场景,从连续信号开始。我们的数据经常被采样;因此,离散时间处理是我们在实践中使用的处理方法。

考虑一个离散信号,其中是信号的长度。这可以是整个信号,也可以是一个较大信号的长度窗口。

我们还假设信号在频率上采样,其中采样间隔是采样之间的时间间隔,以秒为单位。

PSD的Python解决方案

测试数据:

在我们可以计算实际PSD之前,我们需要生成一些测试数据。为此,我们使用频率为10Hz和60Hz的两个正弦波。然后我们引入一些高斯噪声,看看我们是否可以从数据中分离出这两个频率分量。

代码:

测试设置配置。

使用Scipy

标准信号分析包scipy.signal.periodogram是计算周期图的方便实现。我们可以用这种方法简单地确定功率谱密度。Scipy很容易使用;周期图法只需要提供真实信号数据和采样频率即可。为了确保该过程返回PSD而不是功率谱,我们还设置了scaling='density'。

该方法可以得到频率分量和相应的功率密度。

绘制数据

在分别为10Hz和60Hz的频率下,我们可以很容易地区分这两个频率成分。它们都有相同的振幅,这在给定正弦波振幅的情况下是说得通的。

用scipy&welch的方法估计PSD

对于长时间的传输,PSD的计算可能很耗时。估计PSD的一个众所周知的方法是韦尔奇的方法。Scipy也有一种技术,可以随时使用这种评估策略。

可以观察到,Welch的方法非常接近我们测试信号的幅度和频率成分。正确的频率成分很容易从噪声中分辨出来。

我们可以通过增加片段长度来获得更准确的估计。

使用较大的段长度来区分频率成分。当信号组件彼此靠近时,这很有用。

使用Matplotlib

Matplotlib还包括一个计算和显示PSD的方法。它使用前面讨论过的Welch方法计算PSD。

其结果与韦尔奇的Scipy方法相当。如果您希望避免Scipy需求,Matplotlib可能会很有用。

朴素Python实现

我们可以编写一个简单的Python实现,只需要numpy。这个实现完全遵循定义。它相当慢。如果您只需要计算几个频率的PSD,那么它可能很方便。

代码:

然后,为了计算频率的PSD,我们可以使用下面的代码;

代码:

结论

现在您已经拥有了计算psd和周期图的基本工具。这很容易与传统的信号处理包。您还应该了解如何严格遵循数学定义,自己实现PSD方法。


下一个话题 PltPcolor Python





Youtube 视频加入我们的Youtube频道:现在加入

反馈


帮助别人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


b .技术/马华






Baidu
map