问题标签 [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 回答
449 浏览

fft - FFT 输出到 PSD

我需要一些帮助来理解 FFT 的输出。

我正在使用 GNU 收音机。我有一个输出为浮点类型的信号源,经过 FFT 转换后,数据将使用 UDP 发送到我的应用程序。

我的应用程序接收字节数组中的数据,然后将其转换为浮点数组。所以现在我得到了具有格式的 FFT 输出复数:

floatArr = {真实,img,真实,img .....}。

然后我从 FFT 输出计算 PSD 值,并渲染图表。

但问题是我的图表不正确,与 GNU 显示的完全不同

这是我的 GNU 图

在此处输入图像描述

我用这个公式计算PSD值;

1:幅度 = 2*sqrt(re^2 + img^2)/N

2: PSDx = 10*Log10(幅度^2)

但我的图表看起来与 GNU 完全不同:

在此处输入图像描述

请帮忙,我目前对 FFT/PSD(以及英语)知之甚少。我已经尝试渲染这个图表好几个星期了,实际上我只是盲目地应用公式。

0 投票
3 回答
8557 浏览

r - 错误:ggplot2 不知道如何处理类矩阵的数据?

我如何ggplot使用这些数据我尝试正常绘图并且它工作得很好,但是当我使用时我想要更好的可视化ggplot,它给了我上面的错误,我该如何解决这个问题?

这是谱聚类算法的一种实现。并且代码运行良好,数据分类正确。我现在只需要展示这个。

0 投票
1 回答
876 浏览

r - 了解时间序列对象 R 中的频率(频谱分析)

我试图找出我的数据中是否存在 6 个月的季节性。我想通过频谱分析来做到这一点,我会在特定频率下查看频谱的 Ftest。

如果我根据频率为 12 的时间序列对象进行计算,我正在寻求帮助以了解频谱分析中的 x 轴的含义(即频率的含义)。

这里生成了一些数据。我的数据在 10 年内每月收集一次:

多锥输出

如果我正在寻找 6 个月(每年 2 次)周期的频谱功率,我是在寻找频率 1/6 还是 6/12?

0 投票
2 回答
1439 浏览

c# - 来自fft结果的功率谱密度c#

我有一个Complex[](来自 CsCore),这是我的 FFT 的结果。

Complex有一个float real和一个float imaginary

据此,我计算了以下

  • 频率:(double)index * sampleRate / FftSize;
  • 幅度/幅度:Math.Sqrt(Math.Pow(real, 2) + Math.Pow(imaginary, 2));
  • 阶段:Math.Atan(imaginary / real);

如果这些是错误的,请纠正我。

据我了解,这是频域信息,它允许我查看样本中最常见的频率。现在我想看看随时间变化的功率密度。Matlab文档显示了示例,但我不明白,因为我不了解Matlab。有人可以解释有关此主题的 Matlab 文档或帮助我实现 C# 吗?

编辑:
这个答案建议简单地平方幅度。那是对的吗?

0 投票
1 回答
993 浏览

python - 为什么 scipy.signal.welch 抑制零频率?

我尝试使用whelch方法,发现零频异常

所以结果 PSD 为零。为什么 scipy.signal.welch 抑制零频率?

0 投票
1 回答
763 浏览

matlab - 估计自回归 (AR) 模型的模型阶数

我正在尝试使用pmcov()MATLAB 的函数来计算 700 ms 长、采样频率为 1000 Hz 的离散时间信号的功率谱密度估计 (PSD)。此函数需要用于生成 PSD 估计的自回归模型的模型阶数。

如何估计此模型顺序以预测拟合的正确性?我知道很少有像AIC,BIC之类的标准GIC可用于估计模型阶数,但在 matlab 中找不到如何使用它们。任何人都可以帮忙吗?我的输入时间信号是一个[700 129]矩阵。

非常感谢!

0 投票
1 回答
674 浏览

matlab - 128通道脑电信号的绝对/平均频谱功率

我有一个 128 个通道和 500 个样本作为 128*500 矩阵的 EEG 信号。我知道我们可以使用 matlab 中的 pmcov 或 pwelch 计算任何离散时间信号的功率谱密度。但是有什么方法可以计算整个信号的绝对或平均频谱功率?这样我在 y 轴上只有一个绝对功率,在 x 轴上只有一个可用于表示整个信号的对应频率?

非常感谢您的帮助!

0 投票
1 回答
409 浏览

matlab - 由于向量长度不同,绘制 FFT 失败

我有时间(第 1 列)和电流幅度(第 2 列)的 csv 数据。我想绘制电流的 FFT。这实际上是超过 30ns 的仿真数据,数据步长为 1ps。我可以在 MATLAB 中绘制电流与时间的关系。但是在执行 FFT 功能时,它根本没有像它所说的那样绘图

谁能帮我?我还附上了 MATLAB 代码和CSV文件。

我还想绘制功率谱密度。如果有人可以提供帮助,那就太好了。我想获得超过 2GHz 或更多频谱范围的 FFT 和 psd

MATLAB代码1:

我还尝试了另一个 MATLAB 代码,其中的绘图(这里是图片:代码 2 的 FFT 图片)但在时域中显示,我想要频谱,如沿频谱的振幅尖峰。

MATLAB 代码 2:

0 投票
1 回答
3429 浏览

matlab - 用于PSD评估的matlab pwelch函数中的窗口大小和重叠

任何人都可以为 Matlab 中的 pwelch 函数建议理想的窗口大小和重叠样本。我有几个采样率为 1000(信号长度或样本数 = 200)的 200 ms EEG 信号来评估频谱功率。默认情况下,pwelch 使用汉明窗并将数据分成 8 段,重叠率为 50%。这些默认值是否适用于只有 200 个样本的信号?默认值工作正常,它给了我一个 PSD 图。我想确保我所做的在概念上是正确的,如果有人可以提出更好的方法来做到这一点?这是一项 ERP 在 200 毫秒时间内对刺激的反应的研究。我想比较不同频段的频谱功率。

谢谢您的帮助!

0 投票
0 回答
558 浏览

fft - 电流信号的 FFT 和 PSD 及分析

我有一个电流信号,我从节奏模拟中获得了 30ns 的时间,但我的电流实际上在一段时间内变化(我称之为活动区域)。我提取了超过 1ps 固定步长的电流信号数据并绘制了电流图。然后为了分析频谱和功率谱密度,我在 MATLAB 中使用了 FFT 和 PSD。但是我对这种分析的含义以及如何实现它感到困惑。

我的电路的工作频率是2GHz。所以我的目标是查看这个工作频率下的频谱和功率。现在到目前为止,我明白我需要在 MATLAB 中进行 FFT 时对信号进行归一化。我做的。如果我的当前信号是x,我使用FFT_x = abs(fft(x)/sqrt(N))I 的等式进行FFT N = length(x),例如,我当前信号的长度。但是我的工作频率(2 GHz)没有任何峰值,甚至在任何其他频率也没有。FFT 如下所示(注意:为了分析我的操作频率,我将图移到一侧)。

FFT_normalized

但是,如果我不规范化,我会在我使用的工作频率 (2 GHz) 处达到峰值FFT_x = fftshift(fft(x));该图如下所示:

FFT_not_normalized

现在后面的情节没有标准化,但我有一些东西可以实现我的目标。但是我不能说它是我的 FFT,因为我在各种论坛上读到我需要标准化信号。在对其进行归一化时,频谱几乎是平坦的。我如何将其用于我的分析。

此外,我的 PSD 类似于归一化 FFT 的图,只是幅度值不同,如果我将 FFT 归一化为psd = abs(fft(x).^2);

您知道我如何在这里进行分析。我做错了吗?

如果我能为我的案例获得有关 FFT 和 PSD 的一些很好的参考,那就太好了。

解决上述问题后。我有两个担心。在许多论文或参考文献中,我读到需要开窗来进行 FFT。需要吗?这有什么重要性?如果是这样,我该怎么做?

另一个是 - 如何展示 Perseval 定理?我的意思是 FFT 之前的功率和 FFT 之后的功率与 Perseval 定理相同。如何在 MATLAB 中编写代码?