首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Mathematica或C#中重写MATLAB pmtm

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

Stack Overflow用户
提问于 2015-01-07 19:00:08
回答 1查看 176关注 0票数 0

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

我以这种方式使用pmtm:

代码语言:javascript
复制
[p,f] = pmtm(data,tapers,n,fs);

或者使用spectrum.mtmpsd在不使用pmtm的情况下编写。

代码语言:javascript
复制
Hs = spectrum.mtm(tapers,'adapt');
powerspectrum = psd(Hs,data,'Fs',fs,'NFFT',n);
p = powerspectrum.data;
f = powerspectrum.Frequencies;

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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-01-07 20:46:55

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

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

Mathematica有一个包含像PowerSpectralDensity这样的函数的time series包。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27817934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档