如何在 Mathematica 或 C# 中重写 MATLAB pmtm

本文关键字:重写 MATLAB pmtm Mathematica | 更新日期: 2023-09-27 18:36:30

如何在 Mathematica 或 C# (.NET 4.0) 中重写 MATLAB pmtm 函数?

我以这种方式使用 pmtm:

[p,f] = pmtm(data,tapers,n,fs);

或者不使用spectrum.mtmpsd编写而不pmtm

Hs = spectrum.mtm(tapers,'adapt');
powerspectrum = psd(Hs,data,'Fs',fs,'NFFT',n);
p = powerspectrum.data;
f = powerspectrum.Frequencies;

其中数据是具有 2048 个元素的列向量,fs = 40,锥度 = 8,n = 2^nextpow2(size(data,1)) = 2048;

谢谢。

如何在 Mathematica 或 C# 中重写 MATLAB pmtm

pmtm(多锥度法)是一种非参数方法,用于计算类似于周期图方法的功率谱。

在这种方法中,通过对数据进行窗口化并计算傅里叶变换来计算功率谱,取结果的大小并对其进行平方。多锥度方法平均预定数量的周期图,每个周期图使用不同的窗口计算。此方法之所以有效,是因为所选窗口具有两个数学属性。首先,窗户是正交的。这意味着每个周期图都是不相关的,因此对多个周期图求平均值给出的估计值比仅使用一个锥度的方差更低。其次,对于固定的信号长度,窗口在频域中具有最佳浓度。这意味着这些窗口在泄漏方面表现最佳。

Mathematica有一个时间序列包,其中包含PowerSpectralDensity等功能。

如果您有其他问题,请在 https://mathematica.stackexchange.com/中提出您的问题