Matlab、FFT 和质心频率

发布于 2024-12-12 06:12:10 字数 389 浏览 0 评论 0原文

我以这种给定的方式在 Matlab 中进行了 FFT。

X=fft(t); % Take Fourier Transform
T=abs(X); % Take real parts of transform
T=T(1:n/2);

我有兴趣找到该图的质心频率。据我所知,质心频率的给出如下:

在此处输入图像描述

其中 x(n) 表示加权频率值,或bin 号 n 的幅度,f(n) 表示该 bin 的中心频率。

现在我很想说 f(n) 是脚本中 T 的值,但这些是 FFT 的虚部和实部的绝对值,所以我不知道如何找到 x(n)这应该是一个加权频率。

I have taken the FFT in Matlab in this given way.

X=fft(t); % Take Fourier Transform
T=abs(X); % Take real parts of transform
T=T(1:n/2);

I'm interested in finding the centroid frequency of this plot. I understand that the centroid freuency is given as:

enter image description here

Where x(n) represents the weighted frequency value, or magnitude, of bin number n, and f(n) represents the center frequency of that bin.

Now I am tempted to say that f(n) are the values from T in my script, but those are the absolute values of the imaginary and real components of the FFT and so I don't know how to find the x(n) which is supposed to be a weighted frequency.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痴意少年 2024-12-19 06:12:10

你说f(n)是第n个bin的中心频率;这与您的数据无关。它只是采样频率的函数:

f(n) = n * fs / N

当然,您可以在上面的等式中将其分解:

centroid = (fs / N) * SUM { n x(n) } / SUM { x(n) }

听起来 x 就是您在代码中所说的 T

You say that f(n) is the centre-frequency of the n-th bin; this is nothing to do with your data. It's simply a function of your sampling frequency:

f(n) = n * fs / N

You can of course, factor this out in your above equation:

centroid = (fs / N) * SUM { n x(n) } / SUM { x(n) }

It sounds like x is what you've called T in your code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文