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

matlab - 使用 IFFT 获取原始信号和 Parseval 定理

我有一个电流信号(在 csv 中提取),我从节奏模拟中获得了 30ns 的时间。我在 FFT 之前移除了 DC 偏移并应用了窗口函数。并将 FFT 归一化sqrt(N)。我已经将零频率分量移动到我想要的频谱的中心fftshift(X)。我得到了我想要的 FFT。我也想回到我原来的窗口信号,ifft但它没有显示我的窗口信号,而是只显示我使用的窗口函数的一个版本。我的样本信号真实而不复杂。

我有另一个问题。我在 FFT 之前和 FFT 之后的能力是一样的。如何以智能的方式在图表中显示 Parseval 的定理?

FFT 和 IFFT

我还添加了我的 MATLAB 代码,没有上传 csv 和制作向量。我的y价值是Current_wo_dc

MATLAB 代码:

0 投票
0 回答
111 浏览

c++ - C++ - 复值错误,计算交叉谱密度 (CSD)

亲爱的社区,

我面临一个相当烦人的问题。我正在计算两个时间信号之间的交叉谱密度(CSD),这两个时间信号已经用 FFT 处理为两个复频率向量(Singal1 => freqvec,Signal2 => freqvec2)。

对于进一步的计算,我需要正确地得到这个计算的虚部。

计算确实有效,但不知何故,结果总是虚值为零。

0 投票
0 回答
105 浏览

r - 将 R 中的spectrum() 产生的光谱密度值转换为 SAS PROC SPECTRA 产生的值

我正在将演示时态数据分析的 SAS 程序转换为 R。我想使用 R 重现 SAS PROC SPECTRA 输出。

所以,我的问题是,R中的spectrum()函数产生的光谱密度值是否可以转换为SAS PROC SPECTRA产生的光谱密度值?

到目前为止,在 R 中使用 read.xlsx() 输入数据后,这就是我所得到的:

使用 ma 作为 2 阶移动平均平滑器。

变量 U 的白噪声测试

傅里叶分析的周期图。SAS 产生的周期图值看起来大约是 P(下)乘以 4。这并不奇怪,有人告诉我,某些软件会产生周期图值除以 4pi。

因此,R 的spectrum() 函数产生的频谱密度值$spec 值与SAS PROC SPECTRA 产生的那些不同。我可以将我的 R 值转换为 SAS 值吗?

就这样。感谢您的时间。

0 投票
2 回答
1125 浏览

matlab - 如何从功率谱中检索原始信号

我已经计算power spectrum了信号。步骤是:

  • 时间信号的 FFT
  • FFT绝对值的平方/信号长度即功率谱

现在我想把它转换成时域。我应该遵循哪些步骤。

0 投票
0 回答
16 浏览

spectral-density - 转换功率谱密度的维度

我想转换我的数据Vpp/sqrt(Hz)rad^2/sqrt(Hz)与其他数据进行比较。这样我就可以继续我的研究工作。

我怎样才能做到这一点?

0 投票
1 回答
2876 浏览

python - 使用 numpy.fft VS 计算信号 PSD 的预因子。scipy.signal.welch

信号的功率谱密度可以计算为St信号的 FFT与其复共轭的乘积。在 Python 中,这将被写为:uu_fftu_fft_c

然而,Numpy 中的 FFT 定义需要将结果乘以因子1/NN=u.size以便在 u 和它的 FFT 之间进行能量一致的变换。这导致使用 numpy 的 fft 对 PSD 进行更正定义:

另一方面,Scipy 的函数signal.welch直接从输入计算 PSD u

得到的 PSDSt_welch是通过在u大小为 的阵列段中执行几个 FFT 获得的seg_size。因此,我的问题是:

应该St_welch乘以一个因子1/seg_size来给出一个能量一致的PSD?是否应该乘以1/N? 根本不应该倍增吗?

PD:通过对信号执行两种操作进行比较并不简单,因为 Welch 方法还引入了信号的平滑化并改变了频域中的显示。

有关使用时前置因子的必要性的信息numpy.fft

关于此事的期刊文章

0 投票
1 回答
1599 浏览

python - python中离散功率谱密度的正确归一化以解决实际问题

我正在努力正确归一化功率谱密度(及其倒数)。

我遇到了一个真正的问题,假设加速度计的读数以功率谱密度 (psd) 的形式显示,以振幅^2/Hz 为单位。我想把它翻译回一个随机的时间序列。但是,首先我想了解“前进”方向,时间序列到 PSD。

根据 [1],时间序列 x(t) 的 PSD 可以通过以下方式计算:

其中 T 是 x(t) 的采样时间,F(w) 是 x(t) 的傅立叶变换,df=1/T 是傅立叶空间中的频率分辨率。但是,我得到的结果不等于我使用 scipy Welch 方法得到的结果,请参见下面的代码。

第一段代码取自 scipy.welch 纪录片:

我注意到的第一件事是绘制的 psd 随变量 fs 变化,这对我来说似乎很奇怪。(也许我需要相应地调整 nperseg 参数?为什么 nperseg 没有自动设置为 fs 呢?)

我的代码如下:(请注意,我定义了自己的 fft_full 函数,该函数已经处理了正确的傅立叶变换归一化,我通过检查 Parsevals 定理进行了验证)。

不幸的是,我还不允许发布图片,但两个情节看起来不一样!

如果有人能向我解释我哪里出错并一劳永逸地解决这个问题,我将不胜感激:)

[1]:方程式。2.82。航天器结构设计理论与应用中的随机振动,作者:Wijker, J. Jaap, 2009

0 投票
0 回答
99 浏览

python - 从注释访问原始数据而不创建时期

我想在 REM 睡眠阶段计算 EEG 信号的 PSD。我有一个带有睡眠阶段注释的原始脑电图信号。我的注释的描述是'S0,S1,S2,S3,REM'。有没有办法直接从注释中访问原始信号而不创建时期?我的意思是,如果可以根据注释的描述,直接在原始信号上计算 psd,指定我想在原始信号的哪个部分计算 PSD 。像这样的东西:

但是上面的代码不起作用

0 投票
0 回答
205 浏览

python - 互幂谱密度函数从Matlab到Python的转换

我正在尝试将 MATLAB 程序转换为 python。我在设置交叉功率谱密度函数并使用 Matlab 获得匹配结果时遇到问题。

MATLAB代码中使用的函数编写如下:

[Pxy,f] = cpsd(x,y,M,round(M/2),M,fs);

在我的代码中可用的文档中,我读到:M = 128(FFT 点数)和 fs = 25.0(采样频率 [Hz])。x 和 y 是加速度数据的行向量 1x751。

使用的函数有六个参数,所以我假设这[pxy,f] = cpsd(x,y,window,noverlap,f,fs)是程序员打算从 MATLAB 库中调用的函数,它是文档中唯一可用的具有六个参数的函数(请参见此处

此函数返回 f 中指定的频率处的交叉功率谱密度估计值。 (令我烦恼的是 f 没有定义为频率,但变量 M 被传递到那里,它是 FFT 点的数量,但让我们假设这不是一个错误)。

现在,我想用scipy.signal.csd来转换这个函数,但是有两个问题:

  1. 窗口在 MatLab 中定义为整数,但 scipy 的 csd 只允许窗口作为元组、字符串或类似数组的对象;
  2. 在 scipy 的 csd 中,没有一个参数允许返回特定频率的交叉功率谱密度估计。

对于数字 1,我定义了一个窗口如下: window = hamming(M, sym=False) 我选择汉明窗口,因为它是在 MATLAB 的 csd 中将窗口作为整数传递时指定的默认窗口(“如果窗口是整数,则 cpsd 将 x 和 y 分为长度窗口的片段和每个片段的窗口都具有该长度的汉明窗口。”)并且鉴于我正在进行光谱分析,因此并没有使其对称,因此使用周期性窗口是有意义的。

对于 2 号,我没有解决方案。

这是我在 python 代码中设置的函数:

结果在 Pxy(交叉功率谱密度)方面不匹配,但在频率方面是完美的。这些是 matlab 结果中的第一个元素:

虽然这是我从 Python 中得到的:

我尝试在 matlplotlib (在此处记录)中使用简单的交叉谱密度函数,如下所示:

fxx, f = mlab.csd(x,y,NFFT=M,Fs=fs,noverlap=noverlap)

而且我获得了更多的匹配结果,但仍然不完美。

目标不是消除转换中可能出现的数值误差,而是使用匹配输入来操作交叉功率谱密度

有人可以帮忙吗?非常感谢提前!!!

0 投票
0 回答
33 浏览

python - 用于频谱分析的 FFT

有人可以解释一下这些 python 代码行,以及每一行的作用吗?

先感谢您。