问题标签 [spectral-density]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
58 浏览

python-2.7 - Matplotlib PSD 具有初始峰值

我正在使用 Matplotlib PSD 函数来绘制信号的功率谱密度。但是,一开始有一个高峰,我无法理解为什么。我假设它是信号的直流分量。但即使在我消除信号趋势之后,我也会得到相同的峰值。

  1. 一开始的高峰是什么意思?
  2. 有没有办法消除0频率的峰值?

在此处输入图像描述

0 投票
1 回答
53 浏览

r - 我无法将 R 包 psd 中的 psd 范围扩展到 1.5Hz 的频率

我有一个时间序列,我需要使用 R 的 PSD 值。数据是以非均匀间隔采样的,但我使用 predict 命令进行了样条插值,以精确地插入 0.01 秒的读数。我可以非常正确地从 spec.pgram 获得幅度值,但它们不是 psd 值。然而,来自 psd 包的 pspectrum 命令的 psd 值仅在 0 到 0.5Hz 之间,而我感兴趣的区域扩展到大约 1.2Hz。时间序列是:这里

0 投票
1 回答
208 浏览

matlab - 如何从 PSD 或 ASD 中获得幅度谱函数?

对于一个有点笨拙的问题,我很抱歉,但我真的陷入了从给定的 PSD 或 ASD 中找到幅度谱函数的简单但并非微不足道的问题。

所以,我最初拥有的是信号的 ASD 和 PSD: 在此处输入图像描述

我最后想要的是:时间序列域中的信号。

我已经阅读了很多论坛页面,并且我知道应该在这里进行ifft以便从频域切换到时域(例如,这里提出了一个很好的算法: https://www.researchgate。 net/post/How-do-I-generate-time-series-data-from-given-PSD-of-random-vibration-input

问题是我在时域中也已经有了一个信号(从其他软件获得),所以我可以检查我的 ifft 是否工作正常。

综上所述,如果一切正常,输出时间序列信号的 ASD 和 PSD 应该与输入 ASD 和 PSD 一致: 在此处输入图像描述

我的问题是我无法正确计算频域 U(f) 中的幅度谱,以便在 ifft 过程中进一步使用它:

在此处输入图像描述

在青色曲线下方的图表上,应该是 U(f),而灰色曲线是我所拥有的。因此输出的 ASD 和 PSD 与输入的不一致(右下图) 在此处输入图像描述

你能告诉我我应该使用哪种转换来从输入 ASD(或 PSD)到正确的 U(f)?

这是初始函数的方程:

绘制的 U(f)“灰色曲线”通过以下公式获得:

其中tslength- 是信号长度

但是我也使用了更多的组合(使用归一化等),但它们都没有给出正确的 U(f)。

将非常感谢您的帮助!

0 投票
0 回答
74 浏览

r - 如何在 R 中打开/读取 ENVI 文件

我是在 R 中使用 GIS 的新手,我正在尝试按照这篇文章R 如何读取 ENVI .hdr 文件的建议打开一个包含高光谱数据的 ENVI 文件?,但我似乎无法这样做。我尝试了三种不同的方法,但都失败了。我似乎也找不到任何其他描述我的问题的帖子。

  1. 我尝试的第一个选项是仅使用文件名

但我收到以下错误消息:

  1. 然后我尝试了第二个选项,即使用文件名 + 使用file.path读取的头文件名

同样,我收到一条错误消息,上面写着:

  1. 最后,我尝试了第三个选项,使用文件名 + 使用readLines读取的头文件名

但我收到错误消息:

任何帮助将非常感激!

0 投票
1 回答
112 浏览

python - 将 Python 中的 PSD 图旋转 90 度

我使用命令生成了功率谱密度 (PSD) 图

我试图从一篇论文中复制这个情节:

在此处输入图像描述

我能够得到频谱图和 PSD 图。但是,我需要将 PSD 逆时针旋转 90 度才能正确显示。您能帮我将 PSD 图逆时针旋转 90 度吗?谢谢!

这是我到目前为止的代码:

0 投票
0 回答
28 浏览

python - 将 Python 中的 PSD 图旋转 90 度 - 第 2 部分

在从此处发布的解决方案中获得大量帮助后,我现在在绘制功率谱密度图以显示 y 轴值并且 x 轴的标签出现在顶部时出现问题,如图所示这里:

在此处输入图像描述

这是我使用Sheldon向我展示的代码后得到的情节。

您能帮我将 yticks 标签与将 x 轴标题放在图表顶部一起显示吗?谢谢。

这是我到目前为止的代码:

在此处输入图像描述

0 投票
0 回答
45 浏览

r - 使用频谱功能找到具有相同间隔的峰值

我必须分析数据并找到具有更高值重复相同间隔的实例。例子:

在此处输入图像描述

我正在尝试使用频谱功能,但它给了我奇怪的结果。

这是我的示例数据,我每 1 小时插入一次异常值。

我希望得到光谱图,其中光谱密度将显示 60 分钟。但这就是我得到的:

在此处输入图像描述

如何找到重复间隔的峰值(在我的示例中为 60 分钟)?

0 投票
0 回答
206 浏览

python - 用 numpy FFT 与 scipy.signal.welch 计算的复杂数据的功率谱密度缩放

在阅读了这个出色的答案后,它演示了实值数据的基于 FFT 的功率谱密度 (PSD) 与通过 scipy.signal.welch 计算的功率谱密度 (PSD) 的比例关系,我想知道如果输入时域数据是复杂的。

我直接复制了上面答案中的代码,包括缩放因子(“比例”),并简单地在输入正弦曲线中添加了一个随机虚部:

这输出:

和示例数据图:

由 welch 和 fft 计算的叠加 PSD。

Welch PSD 与 FFT PSD 中的样本之间的比率为 0.5。

我认为问题在于,一旦离散傅里叶变换被赋予复数值而不是纯实数值,缩放就不再相同。但是,我不确定如何计算比例因子应该是多少。我注意到,如果我将比例因子设置为 1/(len(y)^2),则 PSD 中的样本之间的比率为 1,但光谱中的总功率不相等。

有人可以帮助我更好地理解这一点吗?

0 投票
1 回答
46 浏览

python - 大量数据的功率谱分析

我有一个电压信号,我正在尝试去噪。信号来自非常大的文件(524288 个单元格)。当我获取整个文件并使 n 等于数据集的长度时,我在频率 0 和最大值处得到两个非常大的峰值。

有没有办法分析整个文件,或者我必须将其拆分为更小的数据集?

0 投票
0 回答
70 浏览

python - 具有特定截止频率的高通滤波器

情况

我正在尝试对黑白图像应用高通滤波器,以通过保持高频来增强纹理。signal.welch()目标是从从scipy库中应用的结果中获得的特定频率值中进行过滤。到目前为止,我尝试过的代码运行良好,我可以绘制频率-PSD 图并直观地识别感兴趣的频率值。

编码

以下代码采用 2D numpy 数组图像并计算每个水平线导数的 PSD,并获得绘制周期图的平均值。

在此示例图像中(忽略红线),f=0.23 附近的峰值有助于识别应用滤波器的**截止频率**(即 fc=0.23)。

问题

有了截止频率,我应该如何在频域中过滤图像并返回空间域?

我最好的猜测是我应该将所有Pxx_tot对应的元素f_tot都设置为 0 低于fc. 如果这种方法是正确的,我仍然不知道如何在过滤图像后回到空间域。